PTR_MAYBE_NULL
PTR_TO_MAP_VALUE_OR_NULL = PTR_MAYBE_NULL | PTR_TO_MAP_VALUE,
PTR_TO_SOCKET_OR_NULL = PTR_MAYBE_NULL | PTR_TO_SOCKET,
PTR_TO_SOCK_COMMON_OR_NULL = PTR_MAYBE_NULL | PTR_TO_SOCK_COMMON,
PTR_TO_TCP_SOCK_OR_NULL = PTR_MAYBE_NULL | PTR_TO_TCP_SOCK,
PTR_TO_BTF_ID_OR_NULL = PTR_MAYBE_NULL | PTR_TO_BTF_ID,
ARG_PTR_TO_MAP_VALUE_OR_NULL = PTR_MAYBE_NULL | ARG_PTR_TO_MAP_VALUE,
ARG_PTR_TO_MEM_OR_NULL = PTR_MAYBE_NULL | ARG_PTR_TO_MEM,
ARG_PTR_TO_CTX_OR_NULL = PTR_MAYBE_NULL | ARG_PTR_TO_CTX,
ARG_PTR_TO_SOCKET_OR_NULL = PTR_MAYBE_NULL | ARG_PTR_TO_SOCKET,
ARG_PTR_TO_STACK_OR_NULL = PTR_MAYBE_NULL | ARG_PTR_TO_STACK,
ARG_PTR_TO_BTF_ID_OR_NULL = PTR_MAYBE_NULL | ARG_PTR_TO_BTF_ID,
RET_PTR_TO_MAP_VALUE_OR_NULL = PTR_MAYBE_NULL | RET_PTR_TO_MAP_VALUE,
RET_PTR_TO_SOCKET_OR_NULL = PTR_MAYBE_NULL | RET_PTR_TO_SOCKET,
RET_PTR_TO_TCP_SOCK_OR_NULL = PTR_MAYBE_NULL | RET_PTR_TO_TCP_SOCK,
RET_PTR_TO_SOCK_COMMON_OR_NULL = PTR_MAYBE_NULL | RET_PTR_TO_SOCK_COMMON,
RET_PTR_TO_RINGBUF_MEM_OR_NULL = PTR_MAYBE_NULL | MEM_RINGBUF | RET_PTR_TO_MEM,
RET_PTR_TO_DYNPTR_MEM_OR_NULL = PTR_MAYBE_NULL | RET_PTR_TO_MEM,
RET_PTR_TO_BTF_ID_OR_NULL = PTR_MAYBE_NULL | RET_PTR_TO_BTF_ID,
return type & PTR_MAYBE_NULL;
info->reg_type = PTR_TRUSTED | PTR_TO_BTF_ID | PTR_MAYBE_NULL;
(flag & PTR_MAYBE_NULL)) {
info->reg_type |= PTR_MAYBE_NULL;
info->reg_type |= PTR_MAYBE_NULL;
info->reg_type |= PTR_MAYBE_NULL;
sub->args[i].arg_type |= PTR_MAYBE_NULL;
sub->args[i].arg_type = ARG_PTR_TO_MEM | PTR_MAYBE_NULL;
sub->args[i].arg_type &= ~PTR_MAYBE_NULL;
.arg4_type = ARG_PTR_TO_MEM | PTR_MAYBE_NULL | MEM_RDONLY,
.ret_type = RET_PTR_TO_MEM_OR_BTF_ID | PTR_MAYBE_NULL | MEM_RDONLY,
if (type & PTR_MAYBE_NULL) {
PTR_TO_BUF | PTR_MAYBE_NULL | MEM_RDONLY },
PTR_TO_BUF | PTR_MAYBE_NULL },
if (!(arg->arg_type & PTR_MAYBE_NULL) && (reg->type & PTR_MAYBE_NULL)) {
ret_flag &= ~PTR_MAYBE_NULL;
reg->type &= ~(MEM_RCU | PTR_MAYBE_NULL);
regs[BPF_REG_0].type |= PTR_MAYBE_NULL;
if (ptr_reg->type & PTR_MAYBE_NULL) {
reg->type &= ~PTR_MAYBE_NULL;
(PTR_MAYBE_NULL | PTR_UNTRUSTED | MEM_RDONLY);
if (arg->arg_type & PTR_MAYBE_NULL)
if (arg->arg_type & PTR_MAYBE_NULL)
reg->type |= PTR_MAYBE_NULL;
perm_flags = PTR_MAYBE_NULL | PTR_TRUSTED | MEM_RCU;
perm_flags = PTR_MAYBE_NULL | MEM_ALLOC;
ret = PTR_MAYBE_NULL;
reg->type = PTR_TO_MEM | PTR_MAYBE_NULL;
flag |= PTR_TRUSTED | PTR_MAYBE_NULL;
flag |= MEM_RCU | PTR_MAYBE_NULL;
if (dreg->type != (PTR_TO_MEM | PTR_MAYBE_NULL) && dreg->type != PTR_TO_MEM)
if (arg_type & PTR_MAYBE_NULL)
type &= ~PTR_MAYBE_NULL;
case PTR_TO_BTF_ID | PTR_TRUSTED | PTR_MAYBE_NULL:
case PTR_TO_BTF_ID | PTR_MAYBE_NULL:
case PTR_TO_BTF_ID | PTR_MAYBE_NULL | MEM_RCU:
.arg3_type = ARG_PTR_TO_MEM | PTR_MAYBE_NULL | MEM_RDONLY,
.arg4_type = ARG_PTR_TO_MEM | PTR_MAYBE_NULL | MEM_RDONLY,
PTR_TO_BUF | PTR_MAYBE_NULL },
.arg1_type = ARG_PTR_TO_MEM | PTR_MAYBE_NULL | MEM_RDONLY,
.arg3_type = ARG_PTR_TO_MEM | PTR_MAYBE_NULL | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | PTR_MAYBE_NULL | MEM_RDONLY,
.arg1_type = ARG_PTR_TO_BTF_ID_SOCK_COMMON | PTR_MAYBE_NULL,
PTR_TO_BUF | PTR_MAYBE_NULL | MEM_RDONLY },