diff options
author | 2014-03-10 15:56:51 -0700 | |
---|---|---|
committer | 2014-03-11 23:25:22 -0400 | |
commit | fdfaf64e75397567257e1051931f9a3377360665 (patch) | |
tree | 019fc2c8cbb011ddf715659316d83ce58ed1ab76 /arch/x86/net/bpf_jit.S | |
parent | bridge: multicast: enable snooping on general queries only (diff) | |
download | linux-fdfaf64e75397567257e1051931f9a3377360665.tar.gz linux-fdfaf64e75397567257e1051931f9a3377360665.tar.bz2 linux-fdfaf64e75397567257e1051931f9a3377360665.zip |
x86: bpf_jit: support negative offsets
Commit a998d4342337 claimed to introduce negative offset support to x86 jit,
but it couldn't be working, since at the time of the execution
of LD+ABS or LD+IND instructions via call into
bpf_internal_load_pointer_neg_helper() the %edx (3rd argument of this func)
had junk value instead of access size in bytes (1 or 2 or 4).
Store size into %edx instead of %ecx (what original commit intended to do)
Fixes: a998d4342337 ("bpf jit: Let the x86 jit handle negative offsets")
Signed-off-by: Alexei Starovoitov <ast@plumgrid.com>
Cc: Jan Seiffert <kaffeemonster@googlemail.com>
Cc: Eric Dumazet <edumazet@google.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/x86/net/bpf_jit.S')
-rw-r--r-- | arch/x86/net/bpf_jit.S | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/net/bpf_jit.S b/arch/x86/net/bpf_jit.S index 877b9a1b2152..01495755701b 100644 --- a/arch/x86/net/bpf_jit.S +++ b/arch/x86/net/bpf_jit.S @@ -140,7 +140,7 @@ bpf_slow_path_byte_msh: push %r9; \ push SKBDATA; \ /* rsi already has offset */ \ - mov $SIZE,%ecx; /* size */ \ + mov $SIZE,%edx; /* size */ \ call bpf_internal_load_pointer_neg_helper; \ test %rax,%rax; \ pop SKBDATA; \ |