diff options
Diffstat (limited to 'kernel/bpf')
| -rw-r--r-- | kernel/bpf/verifier.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 7e75434a9e54..1ede16c8bb40 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c | |||
| @@ -2545,8 +2545,12 @@ static int check_helper_call(struct bpf_verifier_env *env, int func_id, int insn | |||
| 2545 | mark_reg_unknown(env, regs, BPF_REG_0); | 2545 | mark_reg_unknown(env, regs, BPF_REG_0); |
| 2546 | } else if (fn->ret_type == RET_VOID) { | 2546 | } else if (fn->ret_type == RET_VOID) { |
| 2547 | regs[BPF_REG_0].type = NOT_INIT; | 2547 | regs[BPF_REG_0].type = NOT_INIT; |
| 2548 | } else if (fn->ret_type == RET_PTR_TO_MAP_VALUE_OR_NULL) { | 2548 | } else if (fn->ret_type == RET_PTR_TO_MAP_VALUE_OR_NULL || |
| 2549 | regs[BPF_REG_0].type = PTR_TO_MAP_VALUE_OR_NULL; | 2549 | fn->ret_type == RET_PTR_TO_MAP_VALUE) { |
| 2550 | if (fn->ret_type == RET_PTR_TO_MAP_VALUE) | ||
| 2551 | regs[BPF_REG_0].type = PTR_TO_MAP_VALUE; | ||
| 2552 | else | ||
| 2553 | regs[BPF_REG_0].type = PTR_TO_MAP_VALUE_OR_NULL; | ||
| 2550 | /* There is no offset yet applied, variable or fixed */ | 2554 | /* There is no offset yet applied, variable or fixed */ |
| 2551 | mark_reg_known_zero(env, regs, BPF_REG_0); | 2555 | mark_reg_known_zero(env, regs, BPF_REG_0); |
| 2552 | regs[BPF_REG_0].off = 0; | 2556 | regs[BPF_REG_0].off = 0; |
