Fix leaking of kernel heap addresses in net/
Subsystems (4)
PATCH 10/10 Fix leaking of kernel heap addresses in net/
net/unix/af_unix.c +27 -10
@@ -2198,16 +2198,33 @@ static int unix_seq_show(struct seq_file *seq, void *v)struct unix_sock *u =unix_sk (s);unix_state_lock (s); -seq_printf (seq,"%p: %08X %08X %08X %04X %02X %5lu" , - s, -atomic_read (&s->sk_refcnt), -0 , - s->sk_state =TCP_LISTEN ? __SO_ACCEPTCON :0 , - s->sk_type, - s->sk_socket ? - (s->sk_state =TCP_ESTABLISHED ?SS_CONNECTED :SS_UNCONNECTED ) : - (s->sk_state =TCP_ESTABLISHED ?SS_CONNECTING :SS_DISCONNECTING ), -sock_i_ino (s)); +/* Only expose kernel addresses to privileged readers */ +if (capable (CAP_NET_ADMIN )) +seq_printf (seq,"%p: %08X %08X %08X %04X %02X %5lu" , + s, +atomic_read (&s->sk_refcnt), +0 , + s->sk_state =TCP_LISTEN ? __SO_ACCEPTCON :0 , + s->sk_type, + s->sk_socket ? + (s->sk_state =TCP_ESTABLISHED ? +SS_CONNECTED :SS_UNCONNECTED ) : + (s->sk_state =TCP_ESTABLISHED ? +SS_CONNECTING :SS_DISCONNECTING ), +sock_i_ino (s)); +else +seq_printf (seq,"%d: %08X %08X %08X %04X %02X %5lu" , +0 , +atomic_read (&s->sk_refcnt), +0 , + s->sk_state =TCP_LISTEN ? __SO_ACCEPTCON :0 , + s->sk_type, + s->sk_socket ? + (s->sk_state =TCP_ESTABLISHED ? +SS_CONNECTED :SS_UNCONNECTED ) : + (s->sk_state =TCP_ESTABLISHED ? +SS_CONNECTING :SS_DISCONNECTING ), +sock_i_ino (s));if (u->addr) {int i, len;