ARM: net: fix arm instruction endian-ness in bpf_jit_32.c
authorBen Dooks <ben.dooks@codethink.co.uk>
Wed, 24 Jul 2013 14:44:56 +0000 (15:44 +0100)
committerBen Dooks <ben.dooks@codethink.co.uk>
Sat, 19 Oct 2013 19:46:35 +0000 (20:46 +0100)
Use <asm/opcodes.h> to correctly transform instruction byte ordering
into in-memory ordering.

Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
Reviewed-by: Dave Martin <Dave.Martin@arm.com>
arch/arm/net/bpf_jit_32.c

index f50d223..510d923 100644 (file)
@@ -19,6 +19,7 @@
 #include <linux/if_vlan.h>
 #include <asm/cacheflush.h>
 #include <asm/hwcap.h>
+#include <asm/opcodes.h>
 
 #include "bpf_jit_32.h"
 
@@ -113,8 +114,11 @@ static u32 jit_udiv(u32 dividend, u32 divisor)
 
 static inline void _emit(int cond, u32 inst, struct jit_ctx *ctx)
 {
+       inst |= (cond << 28);
+       inst = __opcode_to_mem_arm(inst);
+
        if (ctx->target != NULL)
-               ctx->target[ctx->idx] = inst | (cond << 28);
+               ctx->target[ctx->idx] = inst;
 
        ctx->idx++;
 }