CC: [email protected] TO: "Toke Høiland-Jørgensen" <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/toke/linux.git bpf-freplace-multi-attach-alt-03 head: fe7f8edd142a3de3228b655115a0d2adb3d387a2 commit: 25c1d280dd6f82f0b424b065481235b88fc91389 [4/7] bpf: support attaching freplace programs to multiple attach points :::::: branch date: 3 days ago :::::: commit date: 7 days ago config: i386-randconfig-m021-20200910 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> smatch warnings: kernel/bpf/syscall.c:2670 bpf_tracing_prog_attach() warn: passing a valid pointer to 'PTR_ERR' kernel/bpf/verifier.c:11205 bpf_check_attach_target() error: we previously assumed 'tgt_prog' could be null (see line 11077) # https://git.kernel.org/pub/scm/linux/kernel/git/toke/linux.git/commit/?id=25c1d280dd6f82f0b424b065481235b88fc91389 git remote add toke https://git.kernel.org/pub/scm/linux/kernel/git/toke/linux.git git fetch --no-tags toke bpf-freplace-multi-attach-alt-03 git checkout 25c1d280dd6f82f0b424b065481235b88fc91389 vim +/PTR_ERR +2670 kernel/bpf/syscall.c 5da5357f2868ba Toke Høiland-Jørgensen 2020-09-01 2585 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2586 static int bpf_tracing_prog_attach(struct bpf_prog *prog, 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2587 int tgt_prog_fd, 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2588 u32 btf_id) fec56f5890d93f Alexei Starovoitov 2019-11-14 2589 { a3b80e1078943d Andrii Nakryiko 2020-04-28 2590 struct bpf_link_primer link_primer; 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2591 struct bpf_prog *tgt_prog = NULL; 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2592 struct bpf_tracing_link *link; 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2593 struct btf_func_model fmodel; 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2594 long addr; 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2595 u64 key; a3b80e1078943d Andrii Nakryiko 2020-04-28 2596 int err; fec56f5890d93f Alexei Starovoitov 2019-11-14 2597 9e4e01dfd3254c KP Singh 2020-03-29 2598 switch (prog->type) { 9e4e01dfd3254c KP Singh 2020-03-29 2599 case BPF_PROG_TYPE_TRACING: fec56f5890d93f Alexei Starovoitov 2019-11-14 2600 if (prog->expected_attach_type != BPF_TRACE_FENTRY && be8704ff07d237 Alexei Starovoitov 2020-01-20 2601 prog->expected_attach_type != BPF_TRACE_FEXIT && 9e4e01dfd3254c KP Singh 2020-03-29 2602 prog->expected_attach_type != BPF_MODIFY_RETURN) { 9e4e01dfd3254c KP Singh 2020-03-29 2603 err = -EINVAL; 9e4e01dfd3254c KP Singh 2020-03-29 2604 goto out_put_prog; 9e4e01dfd3254c KP Singh 2020-03-29 2605 } 9e4e01dfd3254c KP Singh 2020-03-29 2606 break; 9e4e01dfd3254c KP Singh 2020-03-29 2607 case BPF_PROG_TYPE_EXT: 9e4e01dfd3254c KP Singh 2020-03-29 2608 if (prog->expected_attach_type != 0) { 9e4e01dfd3254c KP Singh 2020-03-29 2609 err = -EINVAL; 9e4e01dfd3254c KP Singh 2020-03-29 2610 goto out_put_prog; 9e4e01dfd3254c KP Singh 2020-03-29 2611 } 9e4e01dfd3254c KP Singh 2020-03-29 2612 break; 9e4e01dfd3254c KP Singh 2020-03-29 2613 case BPF_PROG_TYPE_LSM: 9e4e01dfd3254c KP Singh 2020-03-29 2614 if (prog->expected_attach_type != BPF_LSM_MAC) { 9e4e01dfd3254c KP Singh 2020-03-29 2615 err = -EINVAL; 9e4e01dfd3254c KP Singh 2020-03-29 2616 goto out_put_prog; 9e4e01dfd3254c KP Singh 2020-03-29 2617 } 9e4e01dfd3254c KP Singh 2020-03-29 2618 break; 9e4e01dfd3254c KP Singh 2020-03-29 2619 default: fec56f5890d93f Alexei Starovoitov 2019-11-14 2620 err = -EINVAL; fec56f5890d93f Alexei Starovoitov 2019-11-14 2621 goto out_put_prog; fec56f5890d93f Alexei Starovoitov 2019-11-14 2622 } 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2623 if (tgt_prog_fd) { 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2624 /* For now we only allow new targets for BPF_PROG_TYPE_EXT */ 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2625 if (prog->type != BPF_PROG_TYPE_EXT || 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2626 !btf_id) { 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2627 err = -EINVAL; 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2628 goto out_put_prog; 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2629 } 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2630 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2631 tgt_prog = bpf_prog_get(tgt_prog_fd); 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2632 if (IS_ERR(tgt_prog)) { 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2633 err = PTR_ERR(tgt_prog); 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2634 tgt_prog = NULL; 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2635 goto out_put_prog; 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2636 } 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2637 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2638 key = ((u64)tgt_prog->aux->id) << 32 | btf_id; 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2639 } else if (btf_id) { 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2640 err = -EINVAL; 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2641 goto out_put_prog; 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2642 } fec56f5890d93f Alexei Starovoitov 2019-11-14 2643 5da5357f2868ba Toke Høiland-Jørgensen 2020-09-01 2644 link = READ_ONCE(prog->aux->tgt_link); 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2645 if (link) { 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2646 if (tgt_prog && link->trampoline->key != key) { 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2647 link = NULL; 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2648 } else { 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2649 struct bpf_tracing_link *olink; 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2650 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2651 olink = cmpxchg(&prog->aux->tgt_link, link, NULL); 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2652 if (olink != link) 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2653 link = NULL; 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2654 } 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2655 } 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2656 70ed506c3bbcfa Andrii Nakryiko 2020-03-02 2657 if (!link) { 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2658 if (!tgt_prog) { 5da5357f2868ba Toke Høiland-Jørgensen 2020-09-01 2659 err = -ENOENT; 5da5357f2868ba Toke Høiland-Jørgensen 2020-09-01 2660 goto out_put_prog; 5da5357f2868ba Toke Høiland-Jørgensen 2020-09-01 2661 } 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2662 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2663 err = bpf_check_attach_target(NULL, prog, tgt_prog, btf_id, 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2664 &fmodel, &addr, NULL, NULL); 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2665 if (err) 70ed506c3bbcfa Andrii Nakryiko 2020-03-02 2666 goto out_put_prog; 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2667 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2668 link = bpf_tracing_link_create(prog, tgt_prog); 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2669 if (IS_ERR(link)) { 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 @2670 err = PTR_ERR(link); 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2671 goto out_put_prog; 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2672 } 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2673 tgt_prog = NULL; 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2674 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2675 err = bpf_trampoline_get(key, (void *)addr, &fmodel, &link->trampoline); 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2676 if (err) 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2677 goto out_put_link; 70ed506c3bbcfa Andrii Nakryiko 2020-03-02 2678 } 70ed506c3bbcfa Andrii Nakryiko 2020-03-02 2679 a3b80e1078943d Andrii Nakryiko 2020-04-28 2680 err = bpf_link_prime(&link->link, &link_primer); a3b80e1078943d Andrii Nakryiko 2020-04-28 2681 if (err) { babf3164095b06 Andrii Nakryiko 2020-03-09 2682 kfree(link); 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2683 goto out_put_link; babf3164095b06 Andrii Nakryiko 2020-03-09 2684 } fec56f5890d93f Alexei Starovoitov 2019-11-14 2685 5da5357f2868ba Toke Høiland-Jørgensen 2020-09-01 2686 err = bpf_trampoline_link_prog(prog, link->trampoline); babf3164095b06 Andrii Nakryiko 2020-03-09 2687 if (err) { a3b80e1078943d Andrii Nakryiko 2020-04-28 2688 bpf_link_cleanup(&link_primer); 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2689 goto out_put_link; fec56f5890d93f Alexei Starovoitov 2019-11-14 2690 } babf3164095b06 Andrii Nakryiko 2020-03-09 2691 5da5357f2868ba Toke Høiland-Jørgensen 2020-09-01 2692 /* at this point the link is no longer referenced from struct bpf_prog, 5da5357f2868ba Toke Høiland-Jørgensen 2020-09-01 2693 * so we can populate this without introducing a circular reference. 5da5357f2868ba Toke Høiland-Jørgensen 2020-09-01 2694 */ 5da5357f2868ba Toke Høiland-Jørgensen 2020-09-01 2695 link->link.prog = prog; 5da5357f2868ba Toke Høiland-Jørgensen 2020-09-01 2696 a3b80e1078943d Andrii Nakryiko 2020-04-28 2697 return bpf_link_settle(&link_primer); 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2698 out_put_link: 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2699 bpf_link_put(&link->link); fec56f5890d93f Alexei Starovoitov 2019-11-14 2700 out_put_prog: fec56f5890d93f Alexei Starovoitov 2019-11-14 2701 bpf_prog_put(prog); 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2702 if (tgt_prog) 25c1d280dd6f82 Toke Høiland-Jørgensen 2020-07-13 2703 bpf_prog_put(tgt_prog); fec56f5890d93f Alexei Starovoitov 2019-11-14 2704 return err; fec56f5890d93f Alexei Starovoitov 2019-11-14 2705 } fec56f5890d93f Alexei Starovoitov 2019-11-14 2706 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
