@@ -520,7 +520,7 @@ int bpf_iter_link_attach(const union bpf_attr *attr, bpfptr_t uattr,
memset(&linfo, 0, sizeof(union bpf_iter_link_info));
- ulinfo = make_bpfptr(attr->link_create.iter_info, uattr.is_kernel);
+ ulinfo = make_bpfptr(attr->link_create.iter_info, bpfptr_is_kernel(uattr));
linfo_len = attr->link_create.iter_info_len;
if (bpfptr_is_null(ulinfo) ^ !linfo_len)
return -EINVAL;
@@ -5483,7 +5483,7 @@ static int finalize_log(struct bpf_verifier_log *log, bpfptr_t uattr, u32 uattr_
static struct btf *btf_parse(const union bpf_attr *attr, bpfptr_t uattr, u32 uattr_size)
{
- bpfptr_t btf_data = make_bpfptr(attr->btf, uattr.is_kernel);
+ bpfptr_t btf_data = make_bpfptr(attr->btf, bpfptr_is_kernel(uattr));
char __user *log_ubuf = u64_to_user_ptr(attr->btf_log_buf);
struct btf_struct_metas *struct_meta_tab;
struct btf_verifier_env *env = NULL;
@@ -93,7 +93,7 @@ int bpf_check_uarg_tail_zero(bpfptr_t uaddr,
if (actual_size <= expected_size)
return 0;
- if (uaddr.is_kernel)
+ if (bpfptr_is_kernel(uaddr))
res = memchr_inv(uaddr.kernel + expected_size, 0,
actual_size - expected_size) == NULL;
else
@@ -1482,8 +1482,8 @@ static int map_lookup_elem(union bpf_attr *attr)
static int map_update_elem(union bpf_attr *attr, bpfptr_t uattr)
{
- bpfptr_t ukey = make_bpfptr(attr->key, uattr.is_kernel);
- bpfptr_t uvalue = make_bpfptr(attr->value, uattr.is_kernel);
+ bpfptr_t ukey = make_bpfptr(attr->key, bpfptr_is_kernel(uattr));
+ bpfptr_t uvalue = make_bpfptr(attr->value, bpfptr_is_kernel(uattr));
int ufd = attr->map_fd;
struct bpf_map *map;
void *key, *value;
@@ -1538,7 +1538,7 @@ static int map_update_elem(union bpf_attr *attr, bpfptr_t uattr)
static int map_delete_elem(union bpf_attr *attr, bpfptr_t uattr)
{
- bpfptr_t ukey = make_bpfptr(attr->key, uattr.is_kernel);
+ bpfptr_t ukey = make_bpfptr(attr->key, bpfptr_is_kernel(uattr));
int ufd = attr->map_fd;
struct bpf_map *map;
struct fd f;
@@ -2670,12 +2670,12 @@ static int bpf_prog_load(union bpf_attr *attr, bpfptr_t uattr, u32 uattr_size)
err = -EFAULT;
if (copy_from_bpfptr(prog->insns,
- make_bpfptr(attr->insns, uattr.is_kernel),
+ make_bpfptr(attr->insns, bpfptr_is_kernel(uattr)),
bpf_prog_insn_size(prog)) != 0)
goto free_prog_sec;
/* copy eBPF program license from user space */
if (strncpy_from_bpfptr(license,
- make_bpfptr(attr->license, uattr.is_kernel),
+ make_bpfptr(attr->license, bpfptr_is_kernel(uattr)),
sizeof(license) - 1) < 0)
goto free_prog_sec;
license[sizeof(license) - 1] = 0;
@@ -15838,7 +15838,7 @@ static int check_btf_func_early(struct bpf_verifier_env *env,
prog = env->prog;
btf = prog->aux->btf;
- urecord = make_bpfptr(attr->func_info, uattr.is_kernel);
+ urecord = make_bpfptr(attr->func_info, bpfptr_is_kernel(uattr));
min_size = min_t(u32, krec_size, urec_size);
krecord = kvcalloc(nfuncs, krec_size, GFP_KERNEL | __GFP_NOWARN);
@@ -15938,7 +15938,7 @@ static int check_btf_func(struct bpf_verifier_env *env,
prog = env->prog;
btf = prog->aux->btf;
- urecord = make_bpfptr(attr->func_info, uattr.is_kernel);
+ urecord = make_bpfptr(attr->func_info, bpfptr_is_kernel(uattr));
krecord = prog->aux->func_info;
info_aux = kcalloc(nfuncs, sizeof(*info_aux), GFP_KERNEL | __GFP_NOWARN);
@@ -16036,7 +16036,7 @@ static int check_btf_line(struct bpf_verifier_env *env,
s = 0;
sub = env->subprog_info;
- ulinfo = make_bpfptr(attr->line_info, uattr.is_kernel);
+ ulinfo = make_bpfptr(attr->line_info, bpfptr_is_kernel(uattr));
expected_size = sizeof(struct bpf_line_info);
ncopy = min_t(u32, expected_size, rec_size);
for (i = 0; i < nr_linfo; i++) {
@@ -16154,7 +16154,7 @@ static int check_core_relo(struct bpf_verifier_env *env,
rec_size % sizeof(u32))
return -EINVAL;
- u_core_relo = make_bpfptr(attr->core_relos, uattr.is_kernel);
+ u_core_relo = make_bpfptr(attr->core_relos, bpfptr_is_kernel(uattr));
expected_size = sizeof(struct bpf_core_relo);
ncopy = min_t(u32, expected_size, rec_size);
@@ -20790,7 +20790,7 @@ int bpf_check(struct bpf_prog **prog, union bpf_attr *attr, bpfptr_t uattr, __u3
env->insn_aux_data[i].orig_idx = i;
env->prog = *prog;
env->ops = bpf_verifier_ops[env->prog->type];
- env->fd_array = make_bpfptr(attr->fd_array, uattr.is_kernel);
+ env->fd_array = make_bpfptr(attr->fd_array, bpfptr_is_kernel(uattr));
is_priv = bpf_capable();
bpf_get_btf_vmlinux();
In some places the bpf code directly access the is_kernel member of bpfptr_t. Change to use the bpfptr_is_kernel() helper. No functional change. Signed-off-by: David Laight <david.laight@aculab.com> --- I'm not at all sure that the pattern: urecord = make_bpfptr(attr->func_info, bpfptr_is_kernel(uattr)); isn't bending the rules somewhat - but that is a different issue. kernel/bpf/bpf_iter.c | 2 +- kernel/bpf/btf.c | 2 +- kernel/bpf/syscall.c | 12 ++++++------ kernel/bpf/verifier.c | 10 +++++----- 4 files changed, 13 insertions(+), 13 deletions(-)