浏览代码

nfp: bpf: pass dst register to ld_field instruction

ld_field instruction is a bit special because the encoding uses
two source registers and one of them becomes the output.  We do
need to pass the dst register to our encoding helpers though,
otherwise the "write both banks" flag will not be observed.

Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Simon Horman <simon.horman@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Jakub Kicinski 8 年之前
父节点
当前提交
2de1be1db2
共有 1 个文件被更改,包括 2 次插入1 次删除
  1. 2 1
      drivers/net/ethernet/netronome/nfp/bpf/jit.c

+ 2 - 1
drivers/net/ethernet/netronome/nfp/bpf/jit.c

@@ -408,7 +408,8 @@ emit_ld_field_any(struct nfp_prog *nfp_prog, enum shf_sc sc, u8 shift,
 	struct nfp_insn_re_regs reg;
 	struct nfp_insn_re_regs reg;
 	int err;
 	int err;
 
 
-	err = swreg_to_restricted(reg_none(), dst, src, &reg, true);
+	/* Note: ld_field is special as it uses one of the src regs as dst */
+	err = swreg_to_restricted(dst, dst, src, &reg, true);
 	if (err) {
 	if (err) {
 		nfp_prog->error = err;
 		nfp_prog->error = err;
 		return;
 		return;