mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-23 23:21:46 +00:00
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: Christoph Hellwig <hch@lst.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a06d30ae7a
commit
4a3672993f
1 changed files with 31 additions and 34 deletions
65
net/socket.c
65
net/socket.c
|
@ -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) {
|
|
||||||
set_fs(KERNEL_DS);
|
|
||||||
optval = (char __user __force *)kernel_optval;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (level == SOL_SOCKET && !sock_use_custom_sol_socket(sock))
|
|
||||||
err =
|
|
||||||
sock_setsockopt(sock, level, optname, optval,
|
|
||||||
optlen);
|
|
||||||
else
|
|
||||||
err =
|
|
||||||
sock->ops->setsockopt(sock, level, optname, optval,
|
|
||||||
optlen);
|
|
||||||
|
|
||||||
if (kernel_optval) {
|
|
||||||
set_fs(oldfs);
|
|
||||||
kfree(kernel_optval);
|
|
||||||
}
|
|
||||||
out_put:
|
|
||||||
fput_light(sock->file, fput_needed);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (kernel_optval) {
|
||||||
|
set_fs(KERNEL_DS);
|
||||||
|
optval = (char __user __force *)kernel_optval;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (level == SOL_SOCKET && !sock_use_custom_sol_socket(sock))
|
||||||
|
err = sock_setsockopt(sock, level, optname, optval, optlen);
|
||||||
|
else
|
||||||
|
err = sock->ops->setsockopt(sock, level, optname, optval,
|
||||||
|
optlen);
|
||||||
|
|
||||||
|
if (kernel_optval) {
|
||||||
|
set_fs(oldfs);
|
||||||
|
kfree(kernel_optval);
|
||||||
|
}
|
||||||
|
|
||||||
|
out_put:
|
||||||
|
fput_light(sock->file, fput_needed);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue