diff options
-rw-r--r-- | arch/s390/net/bpf_jit_comp.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/arch/s390/net/bpf_jit_comp.c b/arch/s390/net/bpf_jit_comp.c index e81c16838b90..9557d8b516df 100644 --- a/arch/s390/net/bpf_jit_comp.c +++ b/arch/s390/net/bpf_jit_comp.c | |||
@@ -55,8 +55,7 @@ struct bpf_jit { | |||
55 | #define SEEN_LITERAL 8 /* code uses literals */ | 55 | #define SEEN_LITERAL 8 /* code uses literals */ |
56 | #define SEEN_FUNC 16 /* calls C functions */ | 56 | #define SEEN_FUNC 16 /* calls C functions */ |
57 | #define SEEN_TAIL_CALL 32 /* code uses tail calls */ | 57 | #define SEEN_TAIL_CALL 32 /* code uses tail calls */ |
58 | #define SEEN_SKB_CHANGE 64 /* code changes skb data */ | 58 | #define SEEN_REG_AX 64 /* code uses constant blinding */ |
59 | #define SEEN_REG_AX 128 /* code uses constant blinding */ | ||
60 | #define SEEN_STACK (SEEN_FUNC | SEEN_MEM | SEEN_SKB) | 59 | #define SEEN_STACK (SEEN_FUNC | SEEN_MEM | SEEN_SKB) |
61 | 60 | ||
62 | /* | 61 | /* |
@@ -448,12 +447,12 @@ static void bpf_jit_prologue(struct bpf_jit *jit, u32 stack_depth) | |||
448 | EMIT6_DISP_LH(0xe3000000, 0x0024, REG_W1, REG_0, | 447 | EMIT6_DISP_LH(0xe3000000, 0x0024, REG_W1, REG_0, |
449 | REG_15, 152); | 448 | REG_15, 152); |
450 | } | 449 | } |
451 | if (jit->seen & SEEN_SKB) | 450 | if (jit->seen & SEEN_SKB) { |
452 | emit_load_skb_data_hlen(jit); | 451 | emit_load_skb_data_hlen(jit); |
453 | if (jit->seen & SEEN_SKB_CHANGE) | ||
454 | /* stg %b1,ST_OFF_SKBP(%r0,%r15) */ | 452 | /* stg %b1,ST_OFF_SKBP(%r0,%r15) */ |
455 | EMIT6_DISP_LH(0xe3000000, 0x0024, BPF_REG_1, REG_0, REG_15, | 453 | EMIT6_DISP_LH(0xe3000000, 0x0024, BPF_REG_1, REG_0, REG_15, |
456 | STK_OFF_SKBP); | 454 | STK_OFF_SKBP); |
455 | } | ||
457 | } | 456 | } |
458 | 457 | ||
459 | /* | 458 | /* |
@@ -983,8 +982,8 @@ static noinline int bpf_jit_insn(struct bpf_jit *jit, struct bpf_prog *fp, int i | |||
983 | EMIT2(0x0d00, REG_14, REG_W1); | 982 | EMIT2(0x0d00, REG_14, REG_W1); |
984 | /* lgr %b0,%r2: load return value into %b0 */ | 983 | /* lgr %b0,%r2: load return value into %b0 */ |
985 | EMIT4(0xb9040000, BPF_REG_0, REG_2); | 984 | EMIT4(0xb9040000, BPF_REG_0, REG_2); |
986 | if (bpf_helper_changes_pkt_data((void *)func)) { | 985 | if ((jit->seen & SEEN_SKB) && |
987 | jit->seen |= SEEN_SKB_CHANGE; | 986 | bpf_helper_changes_pkt_data((void *)func)) { |
988 | /* lg %b1,ST_OFF_SKBP(%r15) */ | 987 | /* lg %b1,ST_OFF_SKBP(%r15) */ |
989 | EMIT6_DISP_LH(0xe3000000, 0x0004, BPF_REG_1, REG_0, | 988 | EMIT6_DISP_LH(0xe3000000, 0x0004, BPF_REG_1, REG_0, |
990 | REG_15, STK_OFF_SKBP); | 989 | REG_15, STK_OFF_SKBP); |