diff options
author | 2018-10-12 14:50:53 -0700 | |
---|---|---|
committer | 2018-10-13 23:03:08 -0700 | |
commit | 67e89ac32828a29adc74e5c9bd59bd70943466f0 (patch) | |
tree | d89350111e7bb1c3073d4e1a67d4a8d55735207a /net/core | |
parent | bpf: wait for running BPF programs when updating map-in-map (diff) | |
download | linux-67e89ac32828a29adc74e5c9bd59bd70943466f0.tar.gz linux-67e89ac32828a29adc74e5c9bd59bd70943466f0.tar.bz2 linux-67e89ac32828a29adc74e5c9bd59bd70943466f0.zip |
bpf: Fix dev pointer dereference from sk_skb
Dan Carpenter reports:
The patch 6acc9b432e67: "bpf: Add helper to retrieve socket in BPF"
from Oct 2, 2018, leads to the following Smatch complaint:
net/core/filter.c:4893 bpf_sk_lookup()
error: we previously assumed 'skb->dev' could be null (see line 4885)
Fix this issue by checking skb->dev before using it.
Signed-off-by: Joe Stringer <joe@wand.net.nz>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/filter.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/core/filter.c b/net/core/filter.c index 4bbc6567fcb8..b844761b5d4c 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -4821,9 +4821,12 @@ static const struct bpf_func_proto bpf_lwt_seg6_adjust_srh_proto = { static struct sock *sk_lookup(struct net *net, struct bpf_sock_tuple *tuple, struct sk_buff *skb, u8 family, u8 proto) { - int dif = skb->dev->ifindex; bool refcounted = false; struct sock *sk = NULL; + int dif = 0; + + if (skb->dev) + dif = skb->dev->ifindex; if (family == AF_INET) { __be32 src4 = tuple->ipv4.saddr; |