diff options
author | John Fastabend <john.fastabend@gmail.com> | 2017-08-28 07:11:43 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-08-28 11:13:22 -0700 |
commit | 81374aaa2693f8d3cd6cf3656a02ac8cf5c7ebea (patch) | |
tree | 24e0a68c98a92ade186346a193fa6900f8ddd562 /kernel/bpf/sockmap.c | |
parent | ed85054d34e2dfb5e9fac95980cf038ecf19225c (diff) | |
download | blackbird-obmc-linux-81374aaa2693f8d3cd6cf3656a02ac8cf5c7ebea.tar.gz blackbird-obmc-linux-81374aaa2693f8d3cd6cf3656a02ac8cf5c7ebea.zip |
bpf: harden sockmap program attach to ensure correct map type
When attaching a program to sockmap we need to check map type
is correct.
Fixes: 174a79ff9515 ("bpf: sockmap with sk redirect support")
Signed-off-by: John Fastabend <john.fastabend@gmail.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'kernel/bpf/sockmap.c')
-rw-r--r-- | kernel/bpf/sockmap.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/bpf/sockmap.c b/kernel/bpf/sockmap.c index 266011c822ec..38bf4e4ae2fd 100644 --- a/kernel/bpf/sockmap.c +++ b/kernel/bpf/sockmap.c @@ -794,6 +794,9 @@ int sock_map_attach_prog(struct bpf_map *map, struct bpf_prog *prog, u32 type) struct bpf_stab *stab = container_of(map, struct bpf_stab, map); struct bpf_prog *orig; + if (unlikely(map->map_type != BPF_MAP_TYPE_SOCKMAP)) + return -EINVAL; + switch (type) { case BPF_SK_SKB_STREAM_PARSER: orig = xchg(&stab->bpf_parse, prog); |