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. 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?