On 12/22/22 8:06 PM, Stanislav Fomichev wrote:
diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
index 11c558be4992..64a68e8fb072 100644
--- a/kernel/bpf/syscall.c
+++ b/kernel/bpf/syscall.c
@@ -2605,6 +2605,12 @@ static int bpf_prog_load(union bpf_attr *attr, bpfptr_t uattr)
goto free_prog_sec;
}
+ if (type == BPF_PROG_TYPE_EXT && dst_prog) {
Does it also need to test the bpf_prog_is_dev_bound(dst_prog->aux)? Otherwise,
the bpf_prog_dev_bound_inherit() below will fail on everything for !CONFIG_NET.
We do the following in bpf_prog_dev_bound_inherit which should be enough?
if (!bpf_prog_is_dev_bound(old_prog->aux))
return 0;
Or am I missing something?
The inline one in include/linux/bpf.h will be called instead when CONFIG_NET is
not set:
static inline int bpf_prog_dev_bound_inherit(struct bpf_prog *new_prog,
struct bpf_prog *old_prog)
{
return -EOPNOTSUPP;
}