ARG_PTR_TO_DYNPTR
sub->args[i].arg_type = ARG_PTR_TO_DYNPTR | MEM_RDONLY;
.arg4_type = ARG_PTR_TO_DYNPTR | DYNPTR_TYPE_LOCAL | MEM_UNINIT | MEM_WRITE,
.arg3_type = ARG_PTR_TO_DYNPTR | MEM_RDONLY,
.arg1_type = ARG_PTR_TO_DYNPTR | MEM_RDONLY,
.arg1_type = ARG_PTR_TO_DYNPTR | MEM_RDONLY,
.arg4_type = ARG_PTR_TO_DYNPTR | DYNPTR_TYPE_RINGBUF | MEM_UNINIT | MEM_WRITE,
.arg1_type = ARG_PTR_TO_DYNPTR | DYNPTR_TYPE_RINGBUF | OBJ_RELEASE,
.arg1_type = ARG_PTR_TO_DYNPTR | DYNPTR_TYPE_RINGBUF | OBJ_RELEASE,
case ARG_PTR_TO_DYNPTR:
if (arg_type == ARG_PTR_TO_DYNPTR)
} else if (arg->arg_type == (ARG_PTR_TO_DYNPTR | MEM_RDONLY)) {
ret = check_func_arg_reg_off(env, reg, regno, ARG_PTR_TO_DYNPTR);
enum bpf_arg_type dynptr_arg_type = ARG_PTR_TO_DYNPTR;
} else if (arg->arg_type == (ARG_PTR_TO_DYNPTR | MEM_RDONLY)) {
return base_type(type) == ARG_PTR_TO_DYNPTR;
[ARG_PTR_TO_DYNPTR] = &dynptr_types,