diff options
author | Nicolas Dichtel <nicolas.dichtel@6wind.com> | 2013-06-05 09:30:55 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-06-11 01:23:32 -0400 |
commit | ed13998c319b050fc9abdb73915859dfdbe1fb38 (patch) | |
tree | 347c9ba28d34f2ab94823f8d52c0d223e00c036f /net/core/sock_diag.c | |
parent | 92bb73ea2c434618a68a58a2f3a5c3fd0b660d18 (diff) |
sock_diag: fix filter code sent to userspace
Filters need to be translated to real BPF code for userland, like SO_GETFILTER.
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/sock_diag.c')
-rw-r--r-- | net/core/sock_diag.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/net/core/sock_diag.c b/net/core/sock_diag.c index d5bef0b0f639..a0e9cf6379de 100644 --- a/net/core/sock_diag.c +++ b/net/core/sock_diag.c | |||
@@ -73,8 +73,13 @@ int sock_diag_put_filterinfo(struct user_namespace *user_ns, struct sock *sk, | |||
73 | goto out; | 73 | goto out; |
74 | } | 74 | } |
75 | 75 | ||
76 | if (filter) | 76 | if (filter) { |
77 | memcpy(nla_data(attr), filter->insns, len); | 77 | struct sock_filter *fb = (struct sock_filter *)nla_data(attr); |
78 | int i; | ||
79 | |||
80 | for (i = 0; i < filter->len; i++, fb++) | ||
81 | sk_decode_filter(&filter->insns[i], fb); | ||
82 | } | ||
78 | 83 | ||
79 | out: | 84 | out: |
80 | rcu_read_unlock(); | 85 | rcu_read_unlock(); |