Thread (134 messages) 134 messages, 10 authors, 2024-11-11

Re: [PATCH v3 14/28] fdget(), trivial conversions

From: Francesco Lavra <hidden>
Date: 2024-11-11 17:22:26
Also in: cgroups, kvm, linux-fsdevel

On Sat, 2024-11-02 at 05:08 +0000, Al Viro wrote:
fdget() is the first thing done in scope, all matching fdput() are
immediately followed by leaving the scope.

Reviewed-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
---
 arch/powerpc/kvm/book3s_64_vio.c           | 21 +++---------
 arch/powerpc/kvm/powerpc.c                 | 24 ++++---------
 arch/powerpc/platforms/cell/spu_syscalls.c |  6 ++--
 arch/x86/kernel/cpu/sgx/main.c             | 10 ++----
 arch/x86/kvm/svm/sev.c                     | 39 ++++++++------------
--
 drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c  | 23 ++++---------
 drivers/gpu/drm/drm_syncobj.c              |  9 ++---
 drivers/media/rc/lirc_dev.c                | 13 +++-----
 fs/btrfs/ioctl.c                           |  5 ++-
 fs/eventfd.c                               |  9 ++---
 fs/eventpoll.c                             | 23 ++++---------
 fs/fhandle.c                               |  5 ++-
 fs/ioctl.c                                 | 23 +++++--------
 fs/kernel_read_file.c                      | 12 +++----
 fs/notify/fanotify/fanotify_user.c         | 15 +++------
 fs/notify/inotify/inotify_user.c           | 17 +++-------
 fs/open.c                                  | 36 +++++++++-----------
 fs/read_write.c                            | 28 +++++-----------
 fs/signalfd.c                              |  9 ++---
 fs/sync.c                                  | 29 ++++++----------
 io_uring/sqpoll.c                          | 29 +++++-----------
 kernel/events/core.c                       | 14 +++-----
 kernel/nsproxy.c                           |  5 ++-
 kernel/pid.c                               |  7 ++--
 kernel/sys.c                               | 15 +++------
 kernel/watch_queue.c                       |  6 ++--
 mm/fadvise.c                               | 10 ++----
 mm/readahead.c                             | 17 +++-------
 net/core/net_namespace.c                   | 10 +++---
 security/landlock/syscalls.c               | 26 +++++----------
 virt/kvm/vfio.c                            |  8 ++---
 31 files changed, 164 insertions(+), 339 deletions(-)
[...]
quoted hunk ↗ jump to hunk
diff --git a/fs/read_write.c b/fs/read_write.c
index ef3ee3725714..5e3df2d39283 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -1663,36 +1663,32 @@ SYSCALL_DEFINE6(copy_file_range, int, fd_in,
loff_t __user *, off_in,
 {
        loff_t pos_in;
        loff_t pos_out;
-       struct fd f_in;
-       struct fd f_out;
        ssize_t ret = -EBADF;
This initialization is no longer needed.
 
-       f_in = fdget(fd_in);
-       if (!fd_file(f_in))
-               goto out2;
+       CLASS(fd, f_in)(fd_in);
+       if (fd_empty(f_in))
+               return -EBADF;
 
-       f_out = fdget(fd_out);
-       if (!fd_file(f_out))
-               goto out1;
+       CLASS(fd, f_out)(fd_out);
+       if (fd_empty(f_out))
+               return -EBADF;
 
-       ret = -EFAULT;
        if (off_in) {
                if (copy_from_user(&pos_in, off_in, sizeof(loff_t)))
-                       goto out;
+                       return -EFAULT;
        } else {
                pos_in = fd_file(f_in)->f_pos;
        }
 
        if (off_out) {
                if (copy_from_user(&pos_out, off_out,
sizeof(loff_t)))
-                       goto out;
+                       return -EFAULT;
        } else {
                pos_out = fd_file(f_out)->f_pos;
        }
 
-       ret = -EINVAL;
        if (flags != 0)
-               goto out;
+               return -EINVAL;
 
        ret = vfs_copy_file_range(fd_file(f_in), pos_in,
fd_file(f_out), pos_out, len,
                                  flags);
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help