diff options
Diffstat (limited to 'net/tipc/socket.c')
| -rw-r--r-- | net/tipc/socket.c | 3 | 
1 files changed, 2 insertions, 1 deletions
| diff --git a/net/tipc/socket.c b/net/tipc/socket.c index 17f8c523e33b..f1c3b8eb4b3d 100644 --- a/net/tipc/socket.c +++ b/net/tipc/socket.c @@ -502,6 +502,7 @@ static int tipc_sk_create(struct net *net, struct socket *sock,  	sock_init_data(sock, sk);  	tipc_set_sk_state(sk, TIPC_OPEN);  	if (tipc_sk_insert(tsk)) { +		sk_free(sk);  		pr_warn("Socket create failed; port number exhausted\n");  		return -EINVAL;  	} @@ -516,7 +517,7 @@ static int tipc_sk_create(struct net *net, struct socket *sock,  	timer_setup(&sk->sk_timer, tipc_sk_timeout, 0);  	sk->sk_shutdown = 0;  	sk->sk_backlog_rcv = tipc_sk_backlog_rcv; -	sk->sk_rcvbuf = sysctl_tipc_rmem[1]; +	sk->sk_rcvbuf = READ_ONCE(sysctl_tipc_rmem[1]);  	sk->sk_data_ready = tipc_data_ready;  	sk->sk_write_space = tipc_write_space;  	sk->sk_destruct = tipc_sock_destruct; |