mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-04-24 14:07:52 -04:00
net: Remove the err argument from sock_from_file
Currently, the sock_from_file prototype takes an "err" pointer that is either not set or set to -ENOTSOCK IFF the returned socket is NULL. This makes the error redundant and it is ignored by a few callers. This patch simplifies the API by letting callers deduce the error based on whether the returned socket is NULL or not. Suggested-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Florent Revest <revest@google.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Reviewed-by: KP Singh <kpsingh@google.com> Link: https://lore.kernel.org/bpf/20201204113609.1850150-1-revest@google.com
This commit is contained in:
parent
5c667dca71
commit
dba4a9256b
7 changed files with 29 additions and 33 deletions
27
net/socket.c
27
net/socket.c
|
@ -445,17 +445,15 @@ static int sock_map_fd(struct socket *sock, int flags)
|
|||
/**
|
||||
* sock_from_file - Return the &socket bounded to @file.
|
||||
* @file: file
|
||||
* @err: pointer to an error code return
|
||||
*
|
||||
* On failure returns %NULL and assigns -ENOTSOCK to @err.
|
||||
* On failure returns %NULL.
|
||||
*/
|
||||
|
||||
struct socket *sock_from_file(struct file *file, int *err)
|
||||
struct socket *sock_from_file(struct file *file)
|
||||
{
|
||||
if (file->f_op == &socket_file_ops)
|
||||
return file->private_data; /* set in sock_map_fd */
|
||||
|
||||
*err = -ENOTSOCK;
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(sock_from_file);
|
||||
|
@ -484,9 +482,11 @@ struct socket *sockfd_lookup(int fd, int *err)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
sock = sock_from_file(file, err);
|
||||
if (!sock)
|
||||
sock = sock_from_file(file);
|
||||
if (!sock) {
|
||||
*err = -ENOTSOCK;
|
||||
fput(file);
|
||||
}
|
||||
return sock;
|
||||
}
|
||||
EXPORT_SYMBOL(sockfd_lookup);
|
||||
|
@ -498,11 +498,12 @@ static struct socket *sockfd_lookup_light(int fd, int *err, int *fput_needed)
|
|||
|
||||
*err = -EBADF;
|
||||
if (f.file) {
|
||||
sock = sock_from_file(f.file, err);
|
||||
sock = sock_from_file(f.file);
|
||||
if (likely(sock)) {
|
||||
*fput_needed = f.flags & FDPUT_FPUT;
|
||||
return sock;
|
||||
}
|
||||
*err = -ENOTSOCK;
|
||||
fdput(f);
|
||||
}
|
||||
return NULL;
|
||||
|
@ -1693,9 +1694,11 @@ int __sys_accept4_file(struct file *file, unsigned file_flags,
|
|||
if (SOCK_NONBLOCK != O_NONBLOCK && (flags & SOCK_NONBLOCK))
|
||||
flags = (flags & ~SOCK_NONBLOCK) | O_NONBLOCK;
|
||||
|
||||
sock = sock_from_file(file, &err);
|
||||
if (!sock)
|
||||
sock = sock_from_file(file);
|
||||
if (!sock) {
|
||||
err = -ENOTSOCK;
|
||||
goto out;
|
||||
}
|
||||
|
||||
err = -ENFILE;
|
||||
newsock = sock_alloc();
|
||||
|
@ -1818,9 +1821,11 @@ int __sys_connect_file(struct file *file, struct sockaddr_storage *address,
|
|||
struct socket *sock;
|
||||
int err;
|
||||
|
||||
sock = sock_from_file(file, &err);
|
||||
if (!sock)
|
||||
sock = sock_from_file(file);
|
||||
if (!sock) {
|
||||
err = -ENOTSOCK;
|
||||
goto out;
|
||||
}
|
||||
|
||||
err =
|
||||
security_socket_connect(sock, (struct sockaddr *)address, addrlen);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue