Merge to Fedora kernel-2.6.7-1.492
[linux-2.6.git] / fs / proc / generic.c
index d80d2f1..8ee2ff9 100644 (file)
@@ -19,6 +19,7 @@
 #include <linux/idr.h>
 #include <linux/vs_base.h>
 #include <linux/vserver/inode.h>
+#include <linux/namei.h>
 #include <asm/uaccess.h>
 #include <asm/bitops.h>
 
@@ -232,14 +233,21 @@ out:
 static int proc_notify_change(struct dentry *dentry, struct iattr *iattr)
 {
        struct inode *inode = dentry->d_inode;
-       int error = inode_setattr(inode, iattr);
-       if (!error) {
-               struct proc_dir_entry *de = PDE(inode);
-               de->uid = inode->i_uid;
-               de->gid = inode->i_gid;
-               de->mode = inode->i_mode;
-       }
+       struct proc_dir_entry *de = PDE(inode);
+       int error;
+
+       error = inode_change_ok(inode, iattr);
+       if (error)
+               goto out;
 
+       error = inode_setattr(inode, iattr);
+       if (error)
+               goto out;
+       
+       de->uid = inode->i_uid;
+       de->gid = inode->i_gid;
+       de->mode = inode->i_mode;
+out:
        return error;
 }