Skip to content

Commit

Permalink
net: streamline __sys_getsockopt
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Christoph Hellwig authored and David S. Miller committed Jul 20, 2020
1 parent 4a36729 commit d8a9b38
Showing 1 changed file with 14 additions and 17 deletions.
31 changes: 14 additions & 17 deletions net/socket.c
Original file line number Diff line number Diff line change
Expand Up @@ -2163,28 +2163,25 @@ static int __sys_getsockopt(int fd, int level, int optname,
int max_optlen;

sock = sockfd_lookup_light(fd, &err, &fput_needed);
if (sock != NULL) {
err = security_socket_getsockopt(sock, level, optname);
if (err)
goto out_put;
if (!sock)
return err;

max_optlen = BPF_CGROUP_GETSOCKOPT_MAX_OPTLEN(optlen);
err = security_socket_getsockopt(sock, level, optname);
if (err)
goto out_put;

if (level == SOL_SOCKET)
err =
sock_getsockopt(sock, level, optname, optval,
max_optlen = BPF_CGROUP_GETSOCKOPT_MAX_OPTLEN(optlen);

if (level == SOL_SOCKET)
err = sock_getsockopt(sock, level, optname, optval, optlen);
else
err = sock->ops->getsockopt(sock, level, optname, optval,
optlen);
else
err =
sock->ops->getsockopt(sock, level, optname, optval,
optlen);

err = BPF_CGROUP_RUN_PROG_GETSOCKOPT(sock->sk, level, optname,
optval, optlen,
max_optlen, err);
err = BPF_CGROUP_RUN_PROG_GETSOCKOPT(sock->sk, level, optname, optval,
optlen, max_optlen, err);
out_put:
fput_light(sock->file, fput_needed);
}
fput_light(sock->file, fput_needed);
return err;
}

Expand Down

0 comments on commit d8a9b38

Please sign in to comment.