diff options
author | Alexei Starovoitov <ast@kernel.org> | 2020-12-08 19:01:51 +0100 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2020-12-10 13:02:53 -0800 |
commit | b02709587ea3d699a608568ee8157d8db4fd8cae (patch) | |
tree | fa020a03b80b74b93d1751f5e7b2108f4eea074e /mm/vmscan.c | |
parent | 4e083fdfa39db29bbc7725e229e701867d0da183 (diff) | |
download | linux-b02709587ea3d699a608568ee8157d8db4fd8cae.tar.gz |
bpf: Fix propagation of 32-bit signed bounds from 64-bit bounds.
The 64-bit signed bounds should not affect 32-bit signed bounds unless the verifier knows that upper 32-bits are either all 1s or all 0s. For example the register with smin_value==1 doesn't mean that s32_min_value is also equal to 1, since smax_value could be larger than 32-bit subregister can hold. The verifier refines the smax/s32_max return value from certain helpers in do_refine_retval_range(). Teach the verifier to recognize that smin/s32_min value is also bounded. When both smin and smax bounds fit into 32-bit subregister the verifier can propagate those bounds. Fixes: 3f50f132d840 ("bpf: Verifier, do explicit ALU32 bounds tracking") Reported-by: Jean-Philippe Brucker <jean-philippe@linaro.org> Acked-by: John Fastabend <john.fastabend@gmail.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'mm/vmscan.c')
0 files changed, 0 insertions, 0 deletions