|
@@ -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);
|