On Thu, Dec 3, 2020 at 5:54 PM Alexei Starovoitov <alexei.starovoitov@xxxxxxxxx> wrote: > > On Thu, Dec 03, 2020 at 12:46:30PM -0800, Andrii Nakryiko wrote: > > + if (attr->attach_prog_fd) { > > + dst_prog = bpf_prog_get(attr->attach_prog_fd); > > + if (IS_ERR(dst_prog)) { > > + dst_prog = NULL; > > + attach_btf = btf_get_by_fd(attr->attach_btf_obj_fd); > > + if (IS_ERR(attach_btf)) > > + return -EINVAL; > > + if (!btf_is_kernel(attach_btf)) { > > + btf_put(attach_btf); > > + return -EINVAL; > > Applied, but please consider follow up with different err code here. > I think we might support this case in the future. > Specifying prog's BTF as a base and attach_btf_id within it might make > user space simpler in some cases. prog's btf covers the whole elf file. The problem is that there is no link from BTF to bpf_prog. And multiple instances of bpf_progs can re-use the same BTF object and the same BTF type ID. That would need to be resolved somehow. But keeping our options open is a good idea either way. So I'll send a patch to switch this to -EOPNOTSUPP (I think that's the one we need to use for user-space). > Where prog_fd is a specific prog. That narrow scope isn't really necessary. > So may be return ENOTSUPP here for now? With a hint that this might > work in the future?