]> git.ipfire.org Git - thirdparty/linux.git/blobdiff - fs/xattr.c
switch simple cases of fget_light to fdget
[thirdparty/linux.git] / fs / xattr.c
index 4d45b7189e7eaa352da0567b8fe4a2d1b738c999..14a7e2544fe36d717d089b81d064376ae49aec18 100644 (file)
@@ -399,22 +399,20 @@ SYSCALL_DEFINE5(lsetxattr, const char __user *, pathname,
 SYSCALL_DEFINE5(fsetxattr, int, fd, const char __user *, name,
                const void __user *,value, size_t, size, int, flags)
 {
-       int fput_needed;
-       struct file *f;
+       struct fd f = fdget(fd);
        struct dentry *dentry;
        int error = -EBADF;
 
-       f = fget_light(fd, &fput_needed);
-       if (!f)
+       if (!f.file)
                return error;
-       dentry = f->f_path.dentry;
+       dentry = f.file->f_path.dentry;
        audit_inode(NULL, dentry);
-       error = mnt_want_write_file(f);
+       error = mnt_want_write_file(f.file);
        if (!error) {
                error = setxattr(dentry, name, value, size, flags);
-               mnt_drop_write_file(f);
+               mnt_drop_write_file(f.file);
        }
-       fput_light(f, fput_needed);
+       fdput(f);
        return error;
 }
 
@@ -495,16 +493,14 @@ SYSCALL_DEFINE4(lgetxattr, const char __user *, pathname,
 SYSCALL_DEFINE4(fgetxattr, int, fd, const char __user *, name,
                void __user *, value, size_t, size)
 {
-       int fput_needed;
-       struct file *f;
+       struct fd f = fdget(fd);
        ssize_t error = -EBADF;
 
-       f = fget_light(fd, &fput_needed);
-       if (!f)
+       if (!f.file)
                return error;
-       audit_inode(NULL, f->f_path.dentry);
-       error = getxattr(f->f_path.dentry, name, value, size);
-       fput_light(f, fput_needed);
+       audit_inode(NULL, f.file->f_path.dentry);
+       error = getxattr(f.file->f_path.dentry, name, value, size);
+       fdput(f);
        return error;
 }
 
@@ -576,16 +572,14 @@ SYSCALL_DEFINE3(llistxattr, const char __user *, pathname, char __user *, list,
 
 SYSCALL_DEFINE3(flistxattr, int, fd, char __user *, list, size_t, size)
 {
-       int fput_needed;
-       struct file *f;
+       struct fd f = fdget(fd);
        ssize_t error = -EBADF;
 
-       f = fget_light(fd, &fput_needed);
-       if (!f)
+       if (!f.file)
                return error;
-       audit_inode(NULL, f->f_path.dentry);
-       error = listxattr(f->f_path.dentry, list, size);
-       fput_light(f, fput_needed);
+       audit_inode(NULL, f.file->f_path.dentry);
+       error = listxattr(f.file->f_path.dentry, list, size);
+       fdput(f);
        return error;
 }
 
@@ -645,22 +639,20 @@ SYSCALL_DEFINE2(lremovexattr, const char __user *, pathname,
 
 SYSCALL_DEFINE2(fremovexattr, int, fd, const char __user *, name)
 {
-       int fput_needed;
-       struct file *f;
+       struct fd f = fdget(fd);
        struct dentry *dentry;
        int error = -EBADF;
 
-       f = fget_light(fd, &fput_needed);
-       if (!f)
+       if (!f.file)
                return error;
-       dentry = f->f_path.dentry;
+       dentry = f.file->f_path.dentry;
        audit_inode(NULL, dentry);
-       error = mnt_want_write_file(f);
+       error = mnt_want_write_file(f.file);
        if (!error) {
                error = removexattr(dentry, name);
-               mnt_drop_write_file(f);
+               mnt_drop_write_file(f.file);
        }
-       fput_light(f, fput_needed);
+       fdput(f);
        return error;
 }