static int check_stack_range_initialized(struct bpf_verifier_env *env,
                                         int regno, int off, int access_size,
                                         bool zero_size_allowed,
-                                        enum bpf_access_src type,
+                                        enum bpf_access_type type,
                                         struct bpf_call_arg_meta *meta);
 
 static struct bpf_reg_state *reg_state(struct bpf_verifier_env *env, int regno)
        /* Note that we pass a NULL meta, so raw access will not be permitted.
         */
        err = check_stack_range_initialized(env, ptr_regno, off, size,
-                                           false, ACCESS_DIRECT, NULL);
+                                           false, BPF_READ, NULL);
        if (err)
                return err;
 
 static int check_stack_access_within_bounds(
                struct bpf_verifier_env *env,
                int regno, int off, int access_size,
-               enum bpf_access_src src, enum bpf_access_type type)
+               enum bpf_access_type type)
 {
        struct bpf_reg_state *regs = cur_regs(env);
        struct bpf_reg_state *reg = regs + regno;
        int err;
        char *err_extra;
 
-       if (src == ACCESS_HELPER)
-               /* We don't know if helpers are reading or writing (or both). */
-               err_extra = " indirect access to";
-       else if (type == BPF_READ)
+       if (type == BPF_READ)
                err_extra = " read from";
        else
                err_extra = " write to";
 
        } else if (reg->type == PTR_TO_STACK) {
                /* Basic bounds checks. */
-               err = check_stack_access_within_bounds(env, regno, off, size, ACCESS_DIRECT, t);
+               err = check_stack_access_within_bounds(env, regno, off, size, t);
                if (err)
                        return err;
 
 static int check_stack_range_initialized(
                struct bpf_verifier_env *env, int regno, int off,
                int access_size, bool zero_size_allowed,
-               enum bpf_access_src type, struct bpf_call_arg_meta *meta)
+               enum bpf_access_type type, struct bpf_call_arg_meta *meta)
 {
        struct bpf_reg_state *reg = reg_state(env, regno);
        struct bpf_func_state *state = func(env, reg);
        int err, min_off, max_off, i, j, slot, spi;
-       char *err_extra = type == ACCESS_HELPER ? " indirect" : "";
-       enum bpf_access_type bounds_check_type;
        /* Some accesses can write anything into the stack, others are
         * read-only.
         */
                return -EACCES;
        }
 
-       if (type == ACCESS_HELPER) {
-               /* The bounds checks for writes are more permissive than for
-                * reads. However, if raw_mode is not set, we'll do extra
-                * checks below.
-                */
-               bounds_check_type = BPF_WRITE;
+       if (type == BPF_WRITE)
                clobber = true;
-       } else {
-               bounds_check_type = BPF_READ;
-       }
-       err = check_stack_access_within_bounds(env, regno, off, access_size,
-                                              type, bounds_check_type);
+
+       err = check_stack_access_within_bounds(env, regno, off, access_size, type);
        if (err)
                return err;
 
                        char tn_buf[48];
 
                        tnum_strn(tn_buf, sizeof(tn_buf), reg->var_off);
-                       verbose(env, "R%d%s variable offset stack access prohibited for !root, var_off=%s\n",
-                               regno, err_extra, tn_buf);
+                       verbose(env, "R%d variable offset stack access prohibited for !root, var_off=%s\n",
+                               regno, tn_buf);
                        return -EACCES;
                }
                /* Only initialized buffer on stack is allowed to be accessed
                }
 
                if (tnum_is_const(reg->var_off)) {
-                       verbose(env, "invalid%s read from stack R%d off %d+%d size %d\n",
-                               err_extra, regno, min_off, i - min_off, access_size);
+                       verbose(env, "invalid read from stack R%d off %d+%d size %d\n",
+                               regno, min_off, i - min_off, access_size);
                } else {
                        char tn_buf[48];
 
                        tnum_strn(tn_buf, sizeof(tn_buf), reg->var_off);
-                       verbose(env, "invalid%s read from stack R%d var_off %s+%d size %d\n",
-                               err_extra, regno, tn_buf, i - min_off, access_size);
+                       verbose(env, "invalid read from stack R%d var_off %s+%d size %d\n",
+                               regno, tn_buf, i - min_off, access_size);
                }
                return -EACCES;
 mark:
                return check_stack_range_initialized(
                                env,
                                regno, reg->off, access_size,
-                               zero_size_allowed, ACCESS_HELPER, meta);
+                               zero_size_allowed, access_type, meta);
        case PTR_TO_BTF_ID:
                return check_ptr_to_btf_access(env, regs, regno, reg->off,
                                               access_size, BPF_READ, -1);
 
 __description("helper access to variable memory: stack, bitwise AND, zero included")
 /* in privileged mode reads from uninitialized stack locations are permitted */
 __success __failure_unpriv
-__msg_unpriv("invalid indirect read from stack R2 off -64+0 size 64")
+__msg_unpriv("invalid read from stack R2 off -64+0 size 64")
 __retval(0)
 __naked void stack_bitwise_and_zero_included(void)
 {
 
 SEC("tracepoint")
 __description("helper access to variable memory: stack, bitwise AND + JMP, wrong max")
-__failure __msg("invalid indirect access to stack R1 off=-64 size=65")
+__failure __msg("invalid write to stack R1 off=-64 size=65")
 __naked void bitwise_and_jmp_wrong_max(void)
 {
        asm volatile ("                                 \
 
 SEC("tracepoint")
 __description("helper access to variable memory: stack, JMP, bounds + offset")
-__failure __msg("invalid indirect access to stack R1 off=-64 size=65")
+__failure __msg("invalid write to stack R1 off=-64 size=65")
 __naked void memory_stack_jmp_bounds_offset(void)
 {
        asm volatile ("                                 \
 
 SEC("tracepoint")
 __description("helper access to variable memory: stack, JMP, wrong max")
-__failure __msg("invalid indirect access to stack R1 off=-64 size=65")
+__failure __msg("invalid write to stack R1 off=-64 size=65")
 __naked void memory_stack_jmp_wrong_max(void)
 {
        asm volatile ("                                 \
 __description("helper access to variable memory: stack, JMP, no min check")
 /* in privileged mode reads from uninitialized stack locations are permitted */
 __success __failure_unpriv
-__msg_unpriv("invalid indirect read from stack R2 off -64+0 size 64")
+__msg_unpriv("invalid read from stack R2 off -64+0 size 64")
 __retval(0)
 __naked void stack_jmp_no_min_check(void)
 {
 __description("helper access to variable memory: 8 bytes leak")
 /* in privileged mode reads from uninitialized stack locations are permitted */
 __success __failure_unpriv
-__msg_unpriv("invalid indirect read from stack R2 off -64+32 size 64")
+__msg_unpriv("invalid read from stack R2 off -64+32 size 64")
 __retval(0)
 __naked void variable_memory_8_bytes_leak(void)
 {