Commit 4a367299 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by David S. Miller

net: streamline __sys_setsockopt

Return early when sockfd_lookup_light fails to reduce a level of
indentation for most of the function body.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent a06d30ae
...@@ -2107,43 +2107,40 @@ static int __sys_setsockopt(int fd, int level, int optname, ...@@ -2107,43 +2107,40 @@ static int __sys_setsockopt(int fd, int level, int optname,
return -EINVAL; return -EINVAL;
sock = sockfd_lookup_light(fd, &err, &fput_needed); sock = sockfd_lookup_light(fd, &err, &fput_needed);
if (sock != NULL) { if (!sock)
err = security_socket_setsockopt(sock, level, optname); return err;
if (err)
goto out_put;
err = BPF_CGROUP_RUN_PROG_SETSOCKOPT(sock->sk, &level, err = security_socket_setsockopt(sock, level, optname);
&optname, optval, &optlen, if (err)
&kernel_optval); goto out_put;
if (err < 0) { err = BPF_CGROUP_RUN_PROG_SETSOCKOPT(sock->sk, &level, &optname,
goto out_put; optval, &optlen, &kernel_optval);
} else if (err > 0) { if (err < 0)
err = 0; goto out_put;
goto out_put; if (err > 0) {
} err = 0;
goto out_put;
}
if (kernel_optval) { if (kernel_optval) {
set_fs(KERNEL_DS); set_fs(KERNEL_DS);
optval = (char __user __force *)kernel_optval; optval = (char __user __force *)kernel_optval;
} }
if (level == SOL_SOCKET && !sock_use_custom_sol_socket(sock)) if (level == SOL_SOCKET && !sock_use_custom_sol_socket(sock))
err = err = sock_setsockopt(sock, level, optname, optval, optlen);
sock_setsockopt(sock, level, optname, optval, else
err = sock->ops->setsockopt(sock, level, optname, optval,
optlen); optlen);
else
err =
sock->ops->setsockopt(sock, level, optname, optval,
optlen);
if (kernel_optval) { if (kernel_optval) {
set_fs(oldfs); set_fs(oldfs);
kfree(kernel_optval); kfree(kernel_optval);
}
out_put:
fput_light(sock->file, fput_needed);
} }
out_put:
fput_light(sock->file, fput_needed);
return err; return err;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment