Commit 257b529876cb45ec791eaa89e3d2ee0d16b49383
Committed by
David S. Miller
1 parent
c0636faa53
Exists in
master
and in
38 other branches
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>
Showing 2 changed files with 14 additions and 8 deletions Side-by-side Diff
include/linux/unix_diag.h
... | ... | @@ -18,6 +18,7 @@ |
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; |
... | ... | @@ -35,6 +36,7 @@ |
35 | 36 | UNIX_DIAG_PEER, |
36 | 37 | UNIX_DIAG_ICONS, |
37 | 38 | UNIX_DIAG_RQLEN, |
39 | + UNIX_DIAG_MEMINFO, | |
38 | 40 | |
39 | 41 | UNIX_DIAG_MAX, |
40 | 42 | }; |
net/unix/diag.c
... | ... | @@ -127,25 +127,29 @@ |
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 | 147 | goto nlmsg_failure; |
148 | 148 | |
149 | + if ((req->udiag_show & UDIAG_SHOW_MEMINFO) && | |
150 | + sock_diag_put_meminfo(sk, skb, UNIX_DIAG_MEMINFO)) | |
151 | + goto nlmsg_failure; | |
152 | + | |
149 | 153 | nlh->nlmsg_len = skb_tail_pointer(skb) - b; |
150 | 154 | return skb->len; |
151 | 155 | |
... | ... | @@ -191,9 +195,9 @@ |
191 | 195 | if (!(req->udiag_states & (1 << sk->sk_state))) |
192 | 196 | goto next; |
193 | 197 | if (sk_diag_dump(sk, skb, req, |
194 | - NETLINK_CB(cb->skb).pid, | |
195 | - cb->nlh->nlmsg_seq, | |
196 | - NLM_F_MULTI) < 0) | |
198 | + NETLINK_CB(cb->skb).pid, | |
199 | + cb->nlh->nlmsg_seq, | |
200 | + NLM_F_MULTI) < 0) | |
197 | 201 | goto done; |
198 | 202 | next: |
199 | 203 | num++; |