On Thu 30-11-23 13:49:11, Christian Brauner wrote: > Honestly, there's little value in having a helper with and without that > int __user *ufd argument. It's just messy and doesn't really give us > anything. Just expose receive_fd() with that argument and get rid of > that helper. > > Signed-off-by: Christian Brauner <brauner@xxxxxxxxxx> Looks good. Feel free to add: Reviewed-by: Jan Kara <jack@xxxxxxx> Honza > --- > drivers/vdpa/vdpa_user/vduse_dev.c | 2 +- > fs/file.c | 11 +++-------- > include/linux/file.h | 5 +---- > include/net/scm.h | 2 +- > kernel/pid.c | 2 +- > kernel/seccomp.c | 2 +- > 6 files changed, 8 insertions(+), 16 deletions(-) > > diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c b/drivers/vdpa/vdpa_user/vduse_dev.c > index 6cb5ce4a8b9a..1d24da79c399 100644 > --- a/drivers/vdpa/vdpa_user/vduse_dev.c > +++ b/drivers/vdpa/vdpa_user/vduse_dev.c > @@ -1157,7 +1157,7 @@ static long vduse_dev_ioctl(struct file *file, unsigned int cmd, > fput(f); > break; > } > - ret = receive_fd(f, perm_to_file_flags(entry.perm)); > + ret = receive_fd(f, NULL, perm_to_file_flags(entry.perm)); > fput(f); > break; > } > diff --git a/fs/file.c b/fs/file.c > index c8eaa0b29a08..3b683b9101d8 100644 > --- a/fs/file.c > +++ b/fs/file.c > @@ -1296,7 +1296,7 @@ int replace_fd(unsigned fd, struct file *file, unsigned flags) > } > > /** > - * __receive_fd() - Install received file into file descriptor table > + * receive_fd() - Install received file into file descriptor table > * @file: struct file that was received from another process > * @ufd: __user pointer to write new fd number to > * @o_flags: the O_* flags to apply to the new fd entry > @@ -1310,7 +1310,7 @@ int replace_fd(unsigned fd, struct file *file, unsigned flags) > * > * Returns newly install fd or -ve on error. > */ > -int __receive_fd(struct file *file, int __user *ufd, unsigned int o_flags) > +int receive_fd(struct file *file, int __user *ufd, unsigned int o_flags) > { > int new_fd; > int error; > @@ -1335,6 +1335,7 @@ int __receive_fd(struct file *file, int __user *ufd, unsigned int o_flags) > __receive_sock(file); > return new_fd; > } > +EXPORT_SYMBOL_GPL(receive_fd); > > int receive_fd_replace(int new_fd, struct file *file, unsigned int o_flags) > { > @@ -1350,12 +1351,6 @@ int receive_fd_replace(int new_fd, struct file *file, unsigned int o_flags) > return new_fd; > } > > -int receive_fd(struct file *file, unsigned int o_flags) > -{ > - return __receive_fd(file, NULL, o_flags); > -} > -EXPORT_SYMBOL_GPL(receive_fd); > - > static int ksys_dup3(unsigned int oldfd, unsigned int newfd, int flags) > { > int err = -EBADF; > diff --git a/include/linux/file.h b/include/linux/file.h > index c0d5219c2852..a50545ef1197 100644 > --- a/include/linux/file.h > +++ b/include/linux/file.h > @@ -96,10 +96,7 @@ DEFINE_CLASS(get_unused_fd, int, if (_T >= 0) put_unused_fd(_T), > > extern void fd_install(unsigned int fd, struct file *file); > > -extern int __receive_fd(struct file *file, int __user *ufd, > - unsigned int o_flags); > - > -extern int receive_fd(struct file *file, unsigned int o_flags); > +extern int receive_fd(struct file *file, int __user *ufd, unsigned int o_flags); > > int receive_fd_replace(int new_fd, struct file *file, unsigned int o_flags); > > diff --git a/include/net/scm.h b/include/net/scm.h > index 8aae2468bae0..cf68acec4d70 100644 > --- a/include/net/scm.h > +++ b/include/net/scm.h > @@ -214,7 +214,7 @@ static inline int scm_recv_one_fd(struct file *f, int __user *ufd, > { > if (!ufd) > return -EFAULT; > - return __receive_fd(f, ufd, flags); > + return receive_fd(f, ufd, flags); > } > > #endif /* __LINUX_NET_SCM_H */ > diff --git a/kernel/pid.c b/kernel/pid.c > index 6500ef956f2f..b52b10865454 100644 > --- a/kernel/pid.c > +++ b/kernel/pid.c > @@ -700,7 +700,7 @@ static int pidfd_getfd(struct pid *pid, int fd) > if (IS_ERR(file)) > return PTR_ERR(file); > > - ret = receive_fd(file, O_CLOEXEC); > + ret = receive_fd(file, NULL, O_CLOEXEC); > fput(file); > > return ret; > diff --git a/kernel/seccomp.c b/kernel/seccomp.c > index 255999ba9190..aca7b437882e 100644 > --- a/kernel/seccomp.c > +++ b/kernel/seccomp.c > @@ -1072,7 +1072,7 @@ static void seccomp_handle_addfd(struct seccomp_kaddfd *addfd, struct seccomp_kn > */ > list_del_init(&addfd->list); > if (!addfd->setfd) > - fd = receive_fd(addfd->file, addfd->flags); > + fd = receive_fd(addfd->file, NULL, addfd->flags); > else > fd = receive_fd_replace(addfd->fd, addfd->file, addfd->flags); > addfd->ret = fd; > > -- > 2.42.0 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR