summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoe Stringer <joe@wand.net.nz>2018-10-12 23:50:53 +0200
committerAlexei Starovoitov <ast@kernel.org>2018-10-14 08:03:08 +0200
commit67e89ac32828a29adc74e5c9bd59bd70943466f0 (patch)
treed89350111e7bb1c3073d4e1a67d4a8d55735207a
parentbpf: wait for running BPF programs when updating map-in-map (diff)
downloadlinux-67e89ac32828a29adc74e5c9bd59bd70943466f0.tar.xz
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>
-rw-r--r--net/core/filter.c5
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;