Merge git://www.linux-watchdog.org/linux-watchdog
[cascardo/linux.git] / fs / proc / generic.c
index 7b3ae3c..e064f56 100644 (file)
@@ -261,16 +261,9 @@ static int proc_notify_change(struct dentry *dentry, struct iattr *iattr)
        if (error)
                return error;
 
-       if ((iattr->ia_valid & ATTR_SIZE) &&
-           iattr->ia_size != i_size_read(inode)) {
-               error = vmtruncate(inode, iattr->ia_size);
-               if (error)
-                       return error;
-       }
-
        setattr_copy(inode, iattr);
        mark_inode_dirty(inode);
-       
+
        de->uid = inode->i_uid;
        de->gid = inode->i_gid;
        de->mode = inode->i_mode;
@@ -359,18 +352,18 @@ retry:
        if (!ida_pre_get(&proc_inum_ida, GFP_KERNEL))
                return -ENOMEM;
 
-       spin_lock(&proc_inum_lock);
+       spin_lock_bh(&proc_inum_lock);
        error = ida_get_new(&proc_inum_ida, &i);
-       spin_unlock(&proc_inum_lock);
+       spin_unlock_bh(&proc_inum_lock);
        if (error == -EAGAIN)
                goto retry;
        else if (error)
                return error;
 
        if (i > UINT_MAX - PROC_DYNAMIC_FIRST) {
-               spin_lock(&proc_inum_lock);
+               spin_lock_bh(&proc_inum_lock);
                ida_remove(&proc_inum_ida, i);
-               spin_unlock(&proc_inum_lock);
+               spin_unlock_bh(&proc_inum_lock);
                return -ENOSPC;
        }
        *inum = PROC_DYNAMIC_FIRST + i;
@@ -379,9 +372,9 @@ retry:
 
 void proc_free_inum(unsigned int inum)
 {
-       spin_lock(&proc_inum_lock);
+       spin_lock_bh(&proc_inum_lock);
        ida_remove(&proc_inum_ida, inum - PROC_DYNAMIC_FIRST);
-       spin_unlock(&proc_inum_lock);
+       spin_unlock_bh(&proc_inum_lock);
 }
 
 static void *proc_follow_link(struct dentry *dentry, struct nameidata *nd)