diff mbox series

[RFC,5/5] file: remove __receive_fd()

Message ID 20231130-vfs-files-fixes-v1-5-e73ca6f4ea83@kernel.org (mailing list archive)
State New, archived
Headers show
Series file: minor fixes | expand

Commit Message

Christian Brauner Nov. 30, 2023, 12:49 p.m. UTC
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@kernel.org>
---
 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(-)

Comments

Matthew Wilcox Nov. 30, 2023, 1:20 p.m. UTC | #1
On Thu, Nov 30, 2023 at 01:49:11PM +0100, Christian Brauner wrote:
> +++ 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);

You could drop the 'extern' while you're at it.
Jan Kara Nov. 30, 2023, 4:44 p.m. UTC | #2
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@kernel.org>

Looks good. Feel free to add:

Reviewed-by: Jan Kara <jack@suse.cz>

								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
>
Christian Brauner Dec. 1, 2023, 1:12 p.m. UTC | #3
> > +extern int receive_fd(struct file *file, int __user *ufd, unsigned int o_flags);
> 
> You could drop the 'extern' while you're at it.

Done.
diff mbox series

Patch

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;