diff options
author | David S. Miller <davem@davemloft.net> | 2018-01-18 09:17:04 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-01-18 09:17:04 -0500 |
commit | 7155f8f391576f133ed26c8d6bb8c7f03ceb404a (patch) | |
tree | c1c219defbaaf8ac3569b4e2ebccd76bda627a31 /kernel/bpf/core.c | |
parent | bpf: fix cls_bpf on filter replace (diff) | |
parent | bpf: mark dst unknown on inconsistent {s, u}bounds adjustments (diff) | |
download | linux-dev-7155f8f391576f133ed26c8d6bb8c7f03ceb404a.tar.xz linux-dev-7155f8f391576f133ed26c8d6bb8c7f03ceb404a.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf
Daniel Borkmann says:
====================
pull-request: bpf 2018-01-18
The following pull-request contains BPF updates for your *net* tree.
The main changes are:
1) Fix a divide by zero due to wrong if (src_reg == 0) check in
64-bit mode. Properly handle this in interpreter and mask it
also generically in verifier to guard against similar checks
in JITs, from Eric and Alexei.
2) Fix a bug in arm64 JIT when tail calls are involved and progs
have different stack sizes, from Daniel.
3) Reject stores into BPF context that are not expected BPF_STX |
BPF_MEM variant, from Daniel.
4) Mark dst reg as unknown on {s,u}bounds adjustments when the
src reg has derived bounds from dead branches, from Daniel.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'kernel/bpf/core.c')
-rw-r--r-- | kernel/bpf/core.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c index 51ec2dda7f08..7949e8b8f94e 100644 --- a/kernel/bpf/core.c +++ b/kernel/bpf/core.c @@ -956,7 +956,7 @@ select_insn: DST = tmp; CONT; ALU_MOD_X: - if (unlikely(SRC == 0)) + if (unlikely((u32)SRC == 0)) return 0; tmp = (u32) DST; DST = do_div(tmp, (u32) SRC); @@ -975,7 +975,7 @@ select_insn: DST = div64_u64(DST, SRC); CONT; ALU_DIV_X: - if (unlikely(SRC == 0)) + if (unlikely((u32)SRC == 0)) return 0; tmp = (u32) DST; do_div(tmp, (u32) SRC); |