ARM: net fix emit_udiv() for BPF_ALU | BPF_DIV | BPF_K intruction.
authorNicolas Schichan <nschichan@freebox.fr>
Wed, 6 May 2015 16:31:56 +0000 (18:31 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sun, 10 May 2015 23:20:32 +0000 (19:20 -0400)
commit19fc99d0c6ba7d9b65456496b5bb2169d5f74cd0
tree5a26d0599eb1e57364f82e3aa200458a1933a19a
parent78f5b899195019f71f7593c604d75ca61658eae3
ARM: net fix emit_udiv() for BPF_ALU | BPF_DIV | BPF_K intruction.

In that case, emit_udiv() will be called with rn == ARM_R0 (r_scratch)
and loading rm first into ARM_R0 will result in jit_udiv() function
being called the same dividend and divisor. Fix that by loading rn
first into ARM_R1 and then rm into ARM_R0.

Signed-off-by: Nicolas Schichan <nschichan@freebox.fr>
Cc: <stable@vger.kernel.org> # v3.13+
Fixes: aee636c4809f (bpf: do not use reciprocal divide)
Acked-by: Mircea Gherzan <mgherzan@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/arm/net/bpf_jit_32.c