diff options
author | Jakub Kicinski <kuba@kernel.org> | 2022-07-01 01:31:00 +0200 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2022-07-01 01:31:00 +0200 |
commit | 0d8730f07c822a351a624462918c7109cdc7f402 (patch) | |
tree | 3539d4c7c098894f3b2d5f49134c8cfccc06aaca /net/socket.c | |
parent | net: phylink: fix NULL pl->pcs dereference during phylink_pcs_poll_start (diff) | |
parent | Merge tag 'net-5.19-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/net... (diff) | |
download | linux-0d8730f07c822a351a624462918c7109cdc7f402.tar.xz linux-0d8730f07c822a351a624462918c7109cdc7f402.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
drivers/net/ethernet/microchip/sparx5/sparx5_switchdev.c
9c5de246c1db ("net: sparx5: mdb add/del handle non-sparx5 devices")
fbb89d02e33a ("net: sparx5: Allow mdb entries to both CPU and ports")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/socket.c')
-rw-r--r-- | net/socket.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/net/socket.c b/net/socket.c index 1b6f5e2ebef5..3d7eb2a79e82 100644 --- a/net/socket.c +++ b/net/socket.c @@ -2146,10 +2146,13 @@ SYSCALL_DEFINE4(send, int, fd, void __user *, buff, size_t, len, int __sys_recvfrom(int fd, void __user *ubuf, size_t size, unsigned int flags, struct sockaddr __user *addr, int __user *addr_len) { + struct sockaddr_storage address; + struct msghdr msg = { + /* Save some cycles and don't copy the address if not needed */ + .msg_name = addr ? (struct sockaddr *)&address : NULL, + }; struct socket *sock; struct iovec iov; - struct msghdr msg; - struct sockaddr_storage address; int err, err2; int fput_needed; @@ -2160,14 +2163,6 @@ int __sys_recvfrom(int fd, void __user *ubuf, size_t size, unsigned int flags, if (!sock) goto out; - msg.msg_control = NULL; - msg.msg_controllen = 0; - /* Save some cycles and don't copy the address if not needed */ - msg.msg_name = addr ? (struct sockaddr *)&address : NULL; - /* We assume all kernel code knows the size of sockaddr_storage */ - msg.msg_namelen = 0; - msg.msg_iocb = NULL; - msg.msg_flags = 0; if (sock->file->f_flags & O_NONBLOCK) flags |= MSG_DONTWAIT; err = sock_recvmsg(sock, &msg, flags); @@ -2372,6 +2367,7 @@ int __copy_msghdr_from_user(struct msghdr *kmsg, return -EFAULT; kmsg->msg_control_is_user = true; + kmsg->msg_get_inq = 0; kmsg->msg_control_user = msg.msg_control; kmsg->msg_controllen = msg.msg_controllen; kmsg->msg_flags = msg.msg_flags; |