diff options
author | Wei Wang <weiwan@google.com> | 2017-10-14 00:01:08 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-10-16 22:06:12 +0200 |
commit | 0e80193bd8c1d97654f1a2f45934e7372e9a512e (patch) | |
tree | de451403c6ee2bc38dca0eed86a9d0254dc06efe /include/net/dst.h | |
parent | bpf: Add -target to clang switch while cross compiling. (diff) | |
download | linux-0e80193bd8c1d97654f1a2f45934e7372e9a512e.tar.xz linux-0e80193bd8c1d97654f1a2f45934e7372e9a512e.zip |
ipv6: check fn before doing FIB6_SUBTREE(fn)
In fib6_locate(), we need to first make sure fn is not NULL before doing
FIB6_SUBTREE(fn) to avoid crash.
This fixes the following static checker warning:
net/ipv6/ip6_fib.c:1462 fib6_locate()
warn: variable dereferenced before check 'fn' (see line 1459)
net/ipv6/ip6_fib.c
1458 if (src_len) {
1459 struct fib6_node *subtree = FIB6_SUBTREE(fn);
^^^^^^^^^^^^^^^^
We shifted this dereference
1460
1461 WARN_ON(saddr == NULL);
1462 if (fn && subtree)
^^
before the check for NULL.
1463 fn = fib6_locate_1(subtree, saddr, src_len,
1464 offsetof(struct rt6_info, rt6i_src)
Fixes: 66f5d6ce53e6 ("ipv6: replace rwlock with rcu and spinlock in fib6_table")
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Wei Wang <weiwan@google.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/dst.h')
0 files changed, 0 insertions, 0 deletions