OSDN Git Service

nfp: bpf: correct the encoding for No-Dest immed
authorJiong Wang <jiong.wang@netronome.com>
Fri, 1 Dec 2017 05:32:55 +0000 (21:32 -0800)
committerDaniel Borkmann <daniel@iogearbox.net>
Fri, 1 Dec 2017 19:59:20 +0000 (20:59 +0100)
When immed is used with No-Dest, the emitter should use reg.dst instead of
reg.areg for the destination, using the latter will actually encode
register zero.

Signed-off-by: Jiong Wang <jiong.wang@netronome.com>
Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
drivers/net/ethernet/netronome/nfp/bpf/jit.c

index 54915a3..024b440 100644 (file)
@@ -224,9 +224,11 @@ emit_immed(struct nfp_prog *nfp_prog, swreg dst, u16 imm,
                return;
        }
 
-       __emit_immed(nfp_prog, reg.areg, reg.breg, imm >> 8, width,
-                    invert, shift, reg.wr_both,
-                    reg.dst_lmextn, reg.src_lmextn);
+       /* Use reg.dst when destination is No-Dest. */
+       __emit_immed(nfp_prog,
+                    swreg_type(dst) == NN_REG_NONE ? reg.dst : reg.areg,
+                    reg.breg, imm >> 8, width, invert, shift,
+                    reg.wr_both, reg.dst_lmextn, reg.src_lmextn);
 }
 
 static void