Unverified Commit 5c8c0c28 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!14243 sunrpc: fix one UAF issue caused by sunrpc kernel tcp socket

parents 3bfe90dc 6a98d139
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1562,6 +1562,10 @@ static struct svc_xprt *svc_create_socket(struct svc_serv *serv,
	newlen = error;

	if (protocol == IPPROTO_TCP) {
		__netns_tracker_free(net, &sock->sk->ns_tracker, false);
		sock->sk->sk_net_refcnt = 1;
		get_net_track(net, &sock->sk->ns_tracker, GFP_KERNEL);
		sock_inuse_add(net, 1);
		if ((error = kernel_listen(sock, 64)) < 0)
			goto bummer;
	}
+7 −0
Original line number Diff line number Diff line
@@ -1920,6 +1920,13 @@ static struct socket *xs_create_sock(struct rpc_xprt *xprt,
		goto out;
	}

	if (protocol == IPPROTO_TCP) {
		__netns_tracker_free(xprt->xprt_net, &sock->sk->ns_tracker, false);
		sock->sk->sk_net_refcnt = 1;
		get_net_track(xprt->xprt_net, &sock->sk->ns_tracker, GFP_KERNEL);
		sock_inuse_add(xprt->xprt_net, 1);
	}

	filp = sock_alloc_file(sock, O_NONBLOCK, NULL);
	if (IS_ERR(filp))
		return ERR_CAST(filp);