diff options
Diffstat (limited to 'kernel/bpf/btf.c')
| -rw-r--r-- | kernel/bpf/btf.c | 9 | 
1 files changed, 7 insertions, 2 deletions
diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c index 58c9af1d4808..0443600146dc 100644 --- a/kernel/bpf/btf.c +++ b/kernel/bpf/btf.c @@ -3746,7 +3746,7 @@ bool btf_ctx_access(int off, int size, enum bpf_access_type type,  				return false;  			t = btf_type_skip_modifiers(btf, t->type, NULL); -			if (!btf_type_is_int(t)) { +			if (!btf_type_is_small_int(t)) {  				bpf_log(log,  					"ret type %s not allowed for fmod_ret\n",  					btf_kind_str[BTF_INFO_KIND(t->info)]); @@ -3768,7 +3768,7 @@ bool btf_ctx_access(int off, int size, enum bpf_access_type type,  	/* skip modifiers */  	while (btf_type_is_modifier(t))  		t = btf_type_by_id(btf, t->type); -	if (btf_type_is_int(t) || btf_type_is_enum(t)) +	if (btf_type_is_small_int(t) || btf_type_is_enum(t))  		/* accessing a scalar */  		return true;  	if (!btf_type_is_ptr(t)) { @@ -4058,6 +4058,11 @@ static int __btf_resolve_helper_id(struct bpf_verifier_log *log, void *fn,  	const char *tname, *sym;  	u32 btf_id, i; +	if (!btf_vmlinux) { +		bpf_log(log, "btf_vmlinux doesn't exist\n"); +		return -EINVAL; +	} +  	if (IS_ERR(btf_vmlinux)) {  		bpf_log(log, "btf_vmlinux is malformed\n");  		return -EINVAL;  | 
