Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

unix_diag: Add the MEMINFO extension

[ Fix indentation of sock_diag*() calls. -DaveM ]

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Pavel Emelyanov and committed by
David S. Miller
257b5298 c0636faa

+14 -8
+2
include/linux/unix_diag.h
··· 18 18 #define UDIAG_SHOW_PEER 0x00000004 /* show peer socket info */ 19 19 #define UDIAG_SHOW_ICONS 0x00000008 /* show pending connections */ 20 20 #define UDIAG_SHOW_RQLEN 0x00000010 /* show skb receive queue len */ 21 + #define UDIAG_SHOW_MEMINFO 0x00000020 /* show memory info of a socket */ 21 22 22 23 struct unix_diag_msg { 23 24 __u8 udiag_family; ··· 36 35 UNIX_DIAG_PEER, 37 36 UNIX_DIAG_ICONS, 38 37 UNIX_DIAG_RQLEN, 38 + UNIX_DIAG_MEMINFO, 39 39 40 40 UNIX_DIAG_MAX, 41 41 };
+12 -8
net/unix/diag.c
··· 127 127 sock_diag_save_cookie(sk, rep->udiag_cookie); 128 128 129 129 if ((req->udiag_show & UDIAG_SHOW_NAME) && 130 - sk_diag_dump_name(sk, skb)) 130 + sk_diag_dump_name(sk, skb)) 131 131 goto nlmsg_failure; 132 132 133 133 if ((req->udiag_show & UDIAG_SHOW_VFS) && 134 - sk_diag_dump_vfs(sk, skb)) 134 + sk_diag_dump_vfs(sk, skb)) 135 135 goto nlmsg_failure; 136 136 137 137 if ((req->udiag_show & UDIAG_SHOW_PEER) && 138 - sk_diag_dump_peer(sk, skb)) 138 + sk_diag_dump_peer(sk, skb)) 139 139 goto nlmsg_failure; 140 140 141 141 if ((req->udiag_show & UDIAG_SHOW_ICONS) && 142 - sk_diag_dump_icons(sk, skb)) 142 + sk_diag_dump_icons(sk, skb)) 143 143 goto nlmsg_failure; 144 144 145 145 if ((req->udiag_show & UDIAG_SHOW_RQLEN) && 146 - sk_diag_show_rqlen(sk, skb)) 146 + sk_diag_show_rqlen(sk, skb)) 147 + goto nlmsg_failure; 148 + 149 + if ((req->udiag_show & UDIAG_SHOW_MEMINFO) && 150 + sock_diag_put_meminfo(sk, skb, UNIX_DIAG_MEMINFO)) 147 151 goto nlmsg_failure; 148 152 149 153 nlh->nlmsg_len = skb_tail_pointer(skb) - b; ··· 195 191 if (!(req->udiag_states & (1 << sk->sk_state))) 196 192 goto next; 197 193 if (sk_diag_dump(sk, skb, req, 198 - NETLINK_CB(cb->skb).pid, 199 - cb->nlh->nlmsg_seq, 200 - NLM_F_MULTI) < 0) 194 + NETLINK_CB(cb->skb).pid, 195 + cb->nlh->nlmsg_seq, 196 + NLM_F_MULTI) < 0) 201 197 goto done; 202 198 next: 203 199 num++;