MEM_RDONLY
*flag = MEM_RDONLY | PTR_UNTRUSTED;
sub->args[i].arg_type = ARG_PTR_TO_DYNPTR | MEM_RDONLY;
sub->args[i].arg_type = ARG_PTR_TO_MEM | MEM_RDONLY | PTR_UNTRUSTED;
.arg1_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg4_type = ARG_PTR_TO_MEM | PTR_MAYBE_NULL | MEM_RDONLY,
.arg3_type = ARG_PTR_TO_DYNPTR | MEM_RDONLY,
.arg1_type = ARG_PTR_TO_DYNPTR | MEM_RDONLY,
.arg3_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg1_type = ARG_PTR_TO_DYNPTR | MEM_RDONLY,
.arg1_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg1_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg1_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg4_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.ret_type = RET_PTR_TO_MEM_OR_BTF_ID | PTR_MAYBE_NULL | MEM_RDONLY,
.ret_type = RET_PTR_TO_MEM_OR_BTF_ID | MEM_RDONLY,
type & MEM_RDONLY ? "rdonly_" : "",
PTR_TO_BUF | PTR_MAYBE_NULL | MEM_RDONLY },
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg1_type = ARG_PTR_TO_MEM | MEM_RDONLY,
if (!(arg_type & (MEM_WRITE | MEM_RDONLY)))
} else if (arg->arg_type == (ARG_PTR_TO_DYNPTR | MEM_RDONLY)) {
ret_flag &= ~MEM_RDONLY;
dynptr_arg_type |= MEM_RDONLY;
regs[BPF_REG_0].type = PTR_TO_MEM | MEM_RDONLY | PTR_UNTRUSTED;
regs[BPF_REG_0].type |= MEM_RDONLY;
regs[BPF_REG_0].type |= MEM_RDONLY;
if ((type & MEM_RDONLY) || (*prev_type & MEM_RDONLY))
merged_type |= MEM_RDONLY;
aux->btf_var.reg_type = PTR_TO_MEM | MEM_RDONLY;
aux->btf_var.reg_type = PTR_TO_MEM | MEM_RDONLY;
case PTR_TO_MEM | MEM_RDONLY | PTR_UNTRUSTED:
} else if (arg->arg_type == (ARG_PTR_TO_DYNPTR | MEM_RDONLY)) {
(PTR_MAYBE_NULL | PTR_UNTRUSTED | MEM_RDONLY);
return type & MEM_RDONLY;
if ((arg_type & (MEM_UNINIT | MEM_RDONLY)) == (MEM_UNINIT | MEM_RDONLY)) {
if (reg->type == CONST_PTR_TO_DYNPTR && !(arg_type & MEM_RDONLY)) {
if (!is_dynptr_type_expected(env, reg, arg_type & ~MEM_RDONLY)) {
if (arg_type & MEM_RDONLY)
type &= ~MEM_RDONLY;
if (!(arg_type & MEM_RDONLY)) {
case PTR_TO_MEM | MEM_RDONLY:
case PTR_TO_BUF | MEM_RDONLY:
.arg3_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg4_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg4_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg1_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg1_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg3_type = ARG_PTR_TO_MEM | PTR_MAYBE_NULL | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg4_type = ARG_PTR_TO_MEM | PTR_MAYBE_NULL | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg4_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg3_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.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,
.arg3_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg4_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg4_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg4_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg4_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg4_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg4_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg4_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg4_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg4_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg3_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg3_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg3_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg3_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg4_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg4_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg1_type = ARG_PTR_TO_FIXED_SIZE_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg1_type = ARG_PTR_TO_FIXED_SIZE_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_MEM | MEM_RDONLY,
.arg1_type = ARG_PTR_TO_FIXED_SIZE_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_FIXED_SIZE_MEM | MEM_RDONLY,
.arg1_type = ARG_PTR_TO_FIXED_SIZE_MEM | MEM_RDONLY,
.arg2_type = ARG_PTR_TO_FIXED_SIZE_MEM | MEM_RDONLY,
PTR_TO_BUF | PTR_MAYBE_NULL | MEM_RDONLY },