Subject: Re: [PATCH] unix: show socket peer if no addr is given in /proc/net/unix

From: Sergei Shtylyov <[email-masked]>
Date: Thu, 09 Jan 2014 01:19:06 +0300

Hello.

On 01/08/2014 08:18 AM, Masatake YAMATO wrote:

> Path field of /proc/net/unix is empty if an address is not given
> to a socket. Typical way to create such socket is calling
> socketpair. The empty fields make it difficult to understand the
> communication between processes. e.g. lsof cannot resolve the role of
> file descriptors well.

> This patch fills the empty fields with unix_peer.

> Signed-off-by: Masatake YAMATO <[email-masked]>
> ---
>   net/unix/af_unix.c | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)

> diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
> index 800ca61..1700133 100644
> --- a/net/unix/af_unix.c
> +++ b/net/unix/af_unix.c
> @@ -2340,7 +2340,9 @@ static int unix_seq_show(struct seq_file *seq, void *v)
>   	else {
>   		struct sock *s = v;
>   		struct unix_sock *u = unix_sk(s);
> +		struct sock *s_peer;
>   		unix_state_lock(s);
> +		s_peer = unix_peer(s);
>
>   		seq_printf(seq, "%pK: %08X %08X %08X %04X %02X %5lu",
>   			s,
> @@ -2367,7 +2369,8 @@ static int unix_seq_show(struct seq_file *seq, void *v)
>   			}
>   			for ( ; i < len; i++)
>   				seq_putc(seq, u->addr->name->sun_path[i]);
> -		}
> +		} else if (s_peer)
> +			seq_printf(seq, " #%pK", s_peer);

    According to Documentation/CodingStyle, both arms of the *if* statement 
should have {} if one has it.

WBR, Sergei