* [toke:bpf-freplace-multi-attach-alt-03 4/7] kernel/bpf/syscall.c:2670 bpf_tracing_prog_attach() warn: passing a valid pointer to 'PTR_ERR'
@ 2020-09-10 8:55 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2020-09-10 8:55 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 11116 bytes --]
CC: kbuild-all(a)lists.01.org
TO: "Toke Høiland-Jørgensen" <toke@redhat.com>
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 <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
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/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 38350 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-09-10 8:55 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-10 8:55 [toke:bpf-freplace-multi-attach-alt-03 4/7] kernel/bpf/syscall.c:2670 bpf_tracing_prog_attach() warn: passing a valid pointer to 'PTR_ERR' kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.