diff options
Diffstat (limited to 'net/unix')
| -rw-r--r-- | net/unix/diag.c | 3 | ||||
| -rw-r--r-- | net/unix/sysctl_net_unix.c | 4 | 
2 files changed, 7 insertions, 0 deletions
| diff --git a/net/unix/diag.c b/net/unix/diag.c index 06748f108a57..5ac19dc1d5e4 100644 --- a/net/unix/diag.c +++ b/net/unix/diag.c @@ -151,6 +151,9 @@ static int sk_diag_fill(struct sock *sk, struct sk_buff *skb, struct unix_diag_r  	    sock_diag_put_meminfo(sk, skb, UNIX_DIAG_MEMINFO))  		goto out_nlmsg_trim; +	if (nla_put_u8(skb, UNIX_DIAG_SHUTDOWN, sk->sk_shutdown)) +		goto out_nlmsg_trim; +  	return nlmsg_end(skb, nlh);  out_nlmsg_trim: diff --git a/net/unix/sysctl_net_unix.c b/net/unix/sysctl_net_unix.c index b34b5b9792f0..8800604c93f4 100644 --- a/net/unix/sysctl_net_unix.c +++ b/net/unix/sysctl_net_unix.c @@ -34,6 +34,10 @@ int __net_init unix_sysctl_register(struct net *net)  	if (table == NULL)  		goto err_alloc; +	/* Don't export sysctls to unprivileged users */ +	if (net->user_ns != &init_user_ns) +		table[0].procname = NULL; +  	table[0].data = &net->unx.sysctl_max_dgram_qlen;  	net->unx.ctl = register_net_sysctl(net, "net/unix", table);  	if (net->unx.ctl == NULL) |