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

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
Loading
Loading
Loading
Loading
+27 −30
Original line number Diff line number Diff line
@@ -2107,18 +2107,18 @@ static int __sys_setsockopt(int fd, int level, int optname,
		return -EINVAL;

	sock = sockfd_lookup_light(fd, &err, &fput_needed);
	if (sock != NULL) {
	if (!sock)
		return err;

	err = security_socket_setsockopt(sock, level, optname);
	if (err)
		goto out_put;

		err = BPF_CGROUP_RUN_PROG_SETSOCKOPT(sock->sk, &level,
						     &optname, optval, &optlen,
						     &kernel_optval);

		if (err < 0) {
	err = BPF_CGROUP_RUN_PROG_SETSOCKOPT(sock->sk, &level, &optname,
					     optval, &optlen, &kernel_optval);
	if (err < 0)
		goto out_put;
		} else if (err > 0) {
	if (err > 0) {
		err = 0;
		goto out_put;
	}
@@ -2129,21 +2129,18 @@ static int __sys_setsockopt(int fd, int level, int optname,
	}

	if (level == SOL_SOCKET && !sock_use_custom_sol_socket(sock))
			err =
			    sock_setsockopt(sock, level, optname, optval,
					    optlen);
		err = sock_setsockopt(sock, level, optname, optval, optlen);
	else
			err =
			    sock->ops->setsockopt(sock, level, optname, optval,
		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;
}