aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkos Chandras <[email protected]>2014-06-23 10:39:00 +0100
committerRalf Baechle <[email protected]>2014-06-26 10:48:23 +0100
commitd8214ef14a1db4172c93e5694906bda9b00fac93 (patch)
tree358519a6be8f7e3c629ab40b1e5158ccaad870a7
parentb6a14a9845259eb21c9d8121330c4c3b22de182e (diff)
MIPS: bpf: Fix stack space allocation for BPF memwords on MIPS64
When allocating stack space for BPF memwords we need to use the appropriate 32 or 64-bit instruction to avoid losing the top 32 bits of the stack pointer. Signed-off-by: Markos Chandras <[email protected]> Cc: "David S. Miller" <[email protected]> Cc: Daniel Borkmann <[email protected]> Cc: Alexei Starovoitov <[email protected]> Cc: [email protected] Cc: [email protected] Patchwork: https://patchwork.linux-mips.org/patch/7135/ Signed-off-by: Ralf Baechle <[email protected]>
-rw-r--r--arch/mips/net/bpf_jit.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/mips/net/bpf_jit.c b/arch/mips/net/bpf_jit.c
index 6e3963425b64..b87390a56a2f 100644
--- a/arch/mips/net/bpf_jit.c
+++ b/arch/mips/net/bpf_jit.c
@@ -623,7 +623,10 @@ static void save_bpf_jit_regs(struct jit_ctx *ctx, unsigned offset)
if (ctx->flags & SEEN_MEM) {
if (real_off % (RSIZE * 2))
real_off += RSIZE;
- emit_addiu(r_M, r_sp, real_off, ctx);
+ if (config_enabled(CONFIG_64BIT))
+ emit_daddiu(r_M, r_sp, real_off, ctx);
+ else
+ emit_addiu(r_M, r_sp, real_off, ctx);
}
}