@@ -2157,9 +2157,14 @@ static int unix_seq_show(struct seq_file *seq, void *v)
seq_puts(seq, "Num RefCount Protocol Flags Type St "
"Inode Path\n");
else {
- struct sock *s = v;
+ struct sock *s = v, *peer;
struct unix_sock *u = unix_sk(s);
+
unix_state_lock(s);
+ peer = unix_peer(s);
+ unix_state_unlock(s);
+
+ unix_state_double_lock(s, peer);
seq_printf(seq, "%p: %08X %08X %08X %04X %02X %5lu",
s,
@@ -2186,8 +2191,10 @@ static int unix_seq_show(struct seq_file *seq, void *v)
}
for ( ; i < len; i++)
seq_putc(seq, u->addr->name->sun_path[i]);
- }
- unix_state_unlock(s);
+ } else if (peer)
+ seq_printf(seq, " peer=%lu", sock_i_ino(peer));
+
+ unix_state_double_unlock(s, peer);
seq_putc(seq, '\n');
}