diff options
Diffstat (limited to 'net/ipv6/udp.c')
-rw-r--r-- | net/ipv6/udp.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index f79bfdbc247f..29f6125592e1 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -19,6 +19,8 @@ * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. + * + * Copyright (c) 2013, NVIDIA CORPORATION. All rights reserved. */ #include <linux/errno.h> @@ -1397,6 +1399,9 @@ static void udp6_sock_seq_show(struct seq_file *seq, struct sock *sp, int bucket struct ipv6_pinfo *np = inet6_sk(sp); const struct in6_addr *dest, *src; __u16 destp, srcp; + unsigned long cmdline = __get_free_page(GFP_TEMPORARY); + if (cmdline == NULL) + return; dest = &np->daddr; src = &np->rcv_saddr; @@ -1404,7 +1409,7 @@ static void udp6_sock_seq_show(struct seq_file *seq, struct sock *sp, int bucket srcp = ntohs(inet->inet_sport); seq_printf(seq, "%5d: %08X%08X%08X%08X:%04X %08X%08X%08X%08X:%04X " - "%02X %08X:%08X %02X:%08lX %08X %5d %8d %lu %d %pK %d\n", + "%02X %08X:%08X %02X:%08lX %08X %5d %8d %lu %d %pK %d %s\n", bucket, src->s6_addr32[0], src->s6_addr32[1], src->s6_addr32[2], src->s6_addr32[3], srcp, @@ -1417,7 +1422,9 @@ static void udp6_sock_seq_show(struct seq_file *seq, struct sock *sp, int bucket sock_i_uid(sp), 0, sock_i_ino(sp), atomic_read(&sp->sk_refcnt), sp, - atomic_read(&sp->sk_drops)); + atomic_read(&sp->sk_drops), + sk_get_waiting_task_cmdline(sp, cmdline)); + free_page(cmdline); } int udp6_seq_show(struct seq_file *seq, void *v) @@ -1428,7 +1435,7 @@ int udp6_seq_show(struct seq_file *seq, void *v) "local_address " "remote_address " "st tx_queue rx_queue tr tm->when retrnsmt" - " uid timeout inode ref pointer drops\n"); + " uid timeout inode ref pointer drops cmdline\n"); else udp6_sock_seq_show(seq, v, ((struct udp_iter_state *)seq->private)->bucket); return 0; |