diff options
author | Ilya Leoshkevich <iii@linux.ibm.com> | 2021-02-10 21:45:02 +0100 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2021-02-11 22:03:19 -0800 |
commit | b2e37a7114ef52b862b4421ed4cd40c4ed2a0642 (patch) | |
tree | f73cb840add63bc77b4b4e435b25dcb9d0d74a0b /tools/lib | |
parent | 6a5df969ff80c1589ba9fd9136b77a4fb93371d0 (diff) | |
download | lwn-b2e37a7114ef52b862b4421ed4cd40c4ed2a0642.tar.gz lwn-b2e37a7114ef52b862b4421ed4cd40c4ed2a0642.zip |
bpf: Fix subreg optimization for BPF_FETCH
All 32-bit variants of BPF_FETCH (add, and, or, xor, xchg, cmpxchg)
define a 32-bit subreg and thus have zext_dst set. Their encoding,
however, uses dst_reg field as a base register, which causes
opt_subreg_zext_lo32_rnd_hi32() to zero-extend said base register
instead of the one the insn really defines (r0 or src_reg).
Fix by properly choosing a register being defined, similar to how
check_atomic() already does that.
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20210210204502.83429-1-iii@linux.ibm.com
Diffstat (limited to 'tools/lib')
0 files changed, 0 insertions, 0 deletions