diff options
Diffstat (limited to 'arch/powerpc/net/bpf_jit_comp64.c')
| -rw-r--r-- | arch/powerpc/net/bpf_jit_comp64.c | 6 | 
1 files changed, 4 insertions, 2 deletions
| diff --git a/arch/powerpc/net/bpf_jit_comp64.c b/arch/powerpc/net/bpf_jit_comp64.c index 46d74e81aff1..d183b4801bdb 100644 --- a/arch/powerpc/net/bpf_jit_comp64.c +++ b/arch/powerpc/net/bpf_jit_comp64.c @@ -763,7 +763,8 @@ emit_clear:  			func = (u8 *) __bpf_call_base + imm;  			/* Save skb pointer if we need to re-cache skb data */ -			if (bpf_helper_changes_pkt_data(func)) +			if ((ctx->seen & SEEN_SKB) && +			    bpf_helper_changes_pkt_data(func))  				PPC_BPF_STL(3, 1, bpf_jit_stack_local(ctx));  			bpf_jit_emit_func_call(image, ctx, (u64)func); @@ -772,7 +773,8 @@ emit_clear:  			PPC_MR(b2p[BPF_REG_0], 3);  			/* refresh skb cache */ -			if (bpf_helper_changes_pkt_data(func)) { +			if ((ctx->seen & SEEN_SKB) && +			    bpf_helper_changes_pkt_data(func)) {  				/* reload skb pointer to r3 */  				PPC_BPF_LL(3, 1, bpf_jit_stack_local(ctx));  				bpf_jit_emit_skb_loads(image, ctx); |