diff options
author | Anton Protopopov <a.s.protopopov@gmail.com> | 2019-06-15 22:53:48 +0000 |
---|---|---|
committer | Daniel Borkmann <daniel@iogearbox.net> | 2019-06-17 23:18:50 +0200 |
commit | 56f0f84e69c7a7f229dfa524b13b0ceb6ce9b09e (patch) | |
tree | b3b55bdd26f17203126d7c9a1f4f7f0393c1c2e4 | |
parent | 4fddbf8a99ee5a65bdd31b3ebbf5a84b9395d496 (diff) | |
download | linux-stable-56f0f84e69c7a7f229dfa524b13b0ceb6ce9b09e.tar.gz linux-stable-56f0f84e69c7a7f229dfa524b13b0ceb6ce9b09e.tar.bz2 linux-stable-56f0f84e69c7a7f229dfa524b13b0ceb6ce9b09e.zip |
bpf: fix the check that forwarding is enabled in bpf_ipv6_fib_lookup
The bpf_ipv6_fib_lookup function should return BPF_FIB_LKUP_RET_FWD_DISABLED
when forwarding is disabled for the input device. However instead of checking
if forwarding is enabled on the input device, it checked the global
net->ipv6.devconf_all->forwarding flag. Change it to behave as expected.
Fixes: 87f5fc7e48dd ("bpf: Provide helper to do forwarding lookups in kernel FIB table")
Signed-off-by: Anton Protopopov <a.s.protopopov@gmail.com>
Acked-by: Toke Høiland-Jørgensen <toke@redhat.com>
Reviewed-by: David Ahern <dsahern@gmail.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
-rw-r--r-- | net/core/filter.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/core/filter.c b/net/core/filter.c index f615e42cf4ef..3fdf1b21be36 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -4737,7 +4737,7 @@ static int bpf_ipv6_fib_lookup(struct net *net, struct bpf_fib_lookup *params, return -ENODEV; idev = __in6_dev_get_safely(dev); - if (unlikely(!idev || !net->ipv6.devconf_all->forwarding)) + if (unlikely(!idev || !idev->cnf.forwarding)) return BPF_FIB_LKUP_RET_FWD_DISABLED; if (flags & BPF_FIB_LOOKUP_OUTPUT) { |