Message ID | 1389158288-2855-1-git-send-email-yamato@redhat.com |
---|---|
State | Rejected, archived |
Delegated to: | David Miller |
Headers | show |
From: Masatake YAMATO <yamato@redhat.com> Date: Wed, 8 Jan 2014 14:18:08 +0900 > 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 <yamato@redhat.com> You cannot change the format of a procfs file without potentially breaking some application which might interpret the output. In this case an application might be looking for an empty field as meaning the sockhad has no given address. I cannot apply this patch. People have repeatedly tried making changes to these networking socket procfs files, and I really wish people would stop trying to do so. If you want specific pieces of new information, extend the socket dumping facility that is actually extensible in a way which will not break existing applications, and that's netlink. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Thank you for reviwing. I'll use netlink diag facility. Masatake YAMATO On Wed, 08 Jan 2014 01:00:43 -0500 (EST), David Miller <davem@davemloft.net> wrote: > From: Masatake YAMATO <yamato@redhat.com> > Date: Wed, 8 Jan 2014 14:18:08 +0900 > >> 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 <yamato@redhat.com> > > You cannot change the format of a procfs file without potentially > breaking some application which might interpret the output. > > In this case an application might be looking for an empty field > as meaning the sockhad has no given address. > > I cannot apply this patch. People have repeatedly tried making > changes to these networking socket procfs files, and I really wish > people would stop trying to do so. > > If you want specific pieces of new information, extend the socket > dumping facility that is actually extensible in a way which will not > break existing applications, and that's netlink. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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 <yamato@redhat.com> > --- > 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 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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); unix_state_unlock(s); seq_putc(seq, '\n'); }
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 <yamato@redhat.com> --- net/unix/af_unix.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)