summaryrefslogtreecommitdiffstats
path: root/lib/test_bpf.c
diff options
context:
space:
mode:
authorDaniel Borkmann <daniel@iogearbox.net>2017-12-14 21:07:26 +0100
committerAlexei Starovoitov <ast@kernel.org>2017-12-15 09:19:35 -0800
commit07aee94394547721ac168cbf4e1c09c14a5fe671 (patch)
treefa31f2226634b8f83f00f99bfffd377eb59c270f /lib/test_bpf.c
parent04514d13222f2c4c91adf0ecb21004cec3388795 (diff)
downloadlinux-stable-07aee94394547721ac168cbf4e1c09c14a5fe671.tar.gz
linux-stable-07aee94394547721ac168cbf4e1c09c14a5fe671.tar.bz2
linux-stable-07aee94394547721ac168cbf4e1c09c14a5fe671.zip
bpf, sparc: fix usage of wrong reg for load_skb_regs after call
When LD_ABS/IND is used in the program, and we have a BPF helper call that changes packet data (bpf_helper_changes_pkt_data() returns true), then in case of sparc JIT, we try to reload cached skb data from bpf2sparc[BPF_REG_6]. However, there is no such guarantee or assumption that skb sits in R6 at this point, all helpers changing skb data only have a guarantee that skb sits in R1. Therefore, store BPF R1 in L7 temporarily and after procedure call use L7 to reload cached skb data. skb sitting in R6 is only true at the time when LD_ABS/IND is executed. Fixes: 7a12b5031c6b ("sparc64: Add eBPF JIT.") Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: David S. Miller <davem@davemloft.net> Acked-by: Alexei Starovoitov <ast@kernel.org> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'lib/test_bpf.c')
0 files changed, 0 insertions, 0 deletions