NFS: Fix an Oops in encode_lookup()
[pandora-kernel.git] / fs / xattr.c
index 3864613..a44fd92 100644 (file)
@@ -9,7 +9,6 @@
  */
 #include <linux/fs.h>
 #include <linux/slab.h>
-#include <linux/smp_lock.h>
 #include <linux/file.h>
 #include <linux/xattr.h>
 #include <linux/namei.h>
@@ -61,8 +60,7 @@ xattr_permission(struct inode *inode, const char *name, int mask)
                if (!S_ISREG(inode->i_mode) && !S_ISDIR(inode->i_mode))
                        return -EPERM;
                if (S_ISDIR(inode->i_mode) && (inode->i_mode & S_ISVTX) &&
-                   (mask & MAY_WRITE) && (current->fsuid != inode->i_uid) &&
-                   !capable(CAP_FOWNER))
+                   (mask & MAY_WRITE) && !is_owner_or_cap(inode))
                        return -EPERM;
        }
 
@@ -351,6 +349,7 @@ sys_fgetxattr(int fd, char __user *name, void __user *value, size_t size)
        f = fget(fd);
        if (!f)
                return error;
+       audit_inode(NULL, f->f_path.dentry->d_inode);
        error = getxattr(f->f_path.dentry, name, value, size);
        fput(f);
        return error;
@@ -423,6 +422,7 @@ sys_flistxattr(int fd, char __user *list, size_t size)
        f = fget(fd);
        if (!f)
                return error;
+       audit_inode(NULL, f->f_path.dentry->d_inode);
        error = listxattr(f->f_path.dentry, list, size);
        fput(f);
        return error;