Commit 6c2f1fef82dd0803cf51ac23d15f97ddce662c13

Authored by Denis Kirjanov
Committed by Greg Kroah-Hartman
1 parent 3e496d49f3

mips: bpf: Fix broken BPF_MOD

[ Upstream commit 2e46477a12f6fd273e31a220b155d66e8352198c ]

Remove optimize_div() from BPF_MOD | BPF_K case
since we don't know the dividend and fix the
emit_mod() by reading the mod operation result from HI register

Signed-off-by: Denis Kirjanov <kda@linux-powerpc.org>
Reviewed-by: Markos Chandras <markos.chandras@imgtec.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Showing 1 changed file with 2 additions and 2 deletions Side-by-side Diff

arch/mips/net/bpf_jit.c
... ... @@ -426,7 +426,7 @@
426 426 u32 *p = &ctx->target[ctx->idx];
427 427 uasm_i_divu(&p, dst, src);
428 428 p = &ctx->target[ctx->idx + 1];
429   - uasm_i_mflo(&p, dst);
  429 + uasm_i_mfhi(&p, dst);
430 430 }
431 431 ctx->idx += 2; /* 2 insts */
432 432 }
... ... @@ -971,7 +971,7 @@
971 971 break;
972 972 case BPF_ALU | BPF_MOD | BPF_K:
973 973 /* A %= k */
974   - if (k == 1 || optimize_div(&k)) {
  974 + if (k == 1) {
975 975 ctx->flags |= SEEN_A;
976 976 emit_jit_reg_move(r_A, r_zero, ctx);
977 977 } else {