From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3EF5F2C82 for ; Thu, 18 Nov 2021 17:02:23 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10172"; a="221448679" X-IronPort-AV: E=Sophos;i="5.87,245,1631602800"; d="gz'50?scan'50,208,50";a="221448679" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Nov 2021 09:02:13 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,245,1631602800"; d="gz'50?scan'50,208,50";a="505933792" Received: from lkp-server02.sh.intel.com (HELO c20d8bc80006) ([10.239.97.151]) by fmsmga007.fm.intel.com with ESMTP; 18 Nov 2021 09:02:11 -0800 Received: from kbuild by c20d8bc80006 with local (Exim 4.92) (envelope-from ) id 1mnkna-0003NR-Tr; Thu, 18 Nov 2021 17:02:10 +0000 Date: Fri, 19 Nov 2021 01:01:45 +0800 From: kernel test robot To: Jiri Olsa Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org, linux-kernel@vger.kernel.org Subject: [jolsa-perf:bpf/batch 16/29] kernel/bpf/syscall.c:2776:8: error: implicit declaration of function 'bpf_tramp_id_single' Message-ID: <202111190134.VHanZU6M-lkp@intel.com> Precedence: bulk X-Mailing-List: llvm@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="wRRV7LY7NUeQGEoC" Content-Disposition: inline User-Agent: Mutt/1.10.1 (2018-07-13) --wRRV7LY7NUeQGEoC Content-Type: text/plain; charset=us-ascii Content-Disposition: inline tree: https://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git bpf/batch head: 5f1f613266bf58f8424a93e1f8b99c4ac8fa6c2b commit: 378851fb026c8aeef2c2f622957a91a1f0fae87f [16/29] bpf: Add bpf_tramp_id_single function config: hexagon-randconfig-r035-20211118 (attached as .config) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git/commit/?id=378851fb026c8aeef2c2f622957a91a1f0fae87f git remote add jolsa-perf https://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git git fetch --no-tags jolsa-perf bpf/batch git checkout 378851fb026c8aeef2c2f622957a91a1f0fae87f # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=hexagon If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): kernel/bpf/syscall.c:2668:15: error: implicit declaration of function 'bpf_tramp_attach_unlink' [-Werror,-Wimplicit-function-declaration] WARN_ON_ONCE(bpf_tramp_attach_unlink(attach)); ^ kernel/bpf/syscall.c:2672:2: error: implicit declaration of function 'bpf_tramp_detach' [-Werror,-Wimplicit-function-declaration] bpf_tramp_detach(attach); ^ >> kernel/bpf/syscall.c:2776:8: error: implicit declaration of function 'bpf_tramp_id_single' [-Werror,-Wimplicit-function-declaration] id = bpf_tramp_id_single(tgt_prog, NULL, btf_id); ^ kernel/bpf/syscall.c:2776:6: warning: incompatible integer to pointer conversion assigning to 'struct bpf_tramp_id *' from 'int' [-Wint-conversion] id = bpf_tramp_id_single(tgt_prog, NULL, btf_id); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kernel/bpf/syscall.c:2831:8: error: implicit declaration of function 'bpf_tramp_id_single' [-Werror,-Wimplicit-function-declaration] id = bpf_tramp_id_single(NULL, prog->aux->attach_btf, btf_id); ^ kernel/bpf/syscall.c:2831:6: warning: incompatible integer to pointer conversion assigning to 'struct bpf_tramp_id *' from 'int' [-Wint-conversion] id = bpf_tramp_id_single(NULL, prog->aux->attach_btf, btf_id); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kernel/bpf/syscall.c:2839:8: error: implicit declaration of function 'bpf_tramp_id_is_empty' [-Werror,-Wimplicit-function-declaration] (!bpf_tramp_id_is_empty(id) && ^ kernel/bpf/syscall.c:2840:8: error: implicit declaration of function 'bpf_tramp_id_is_equal' [-Werror,-Wimplicit-function-declaration] bpf_tramp_id_is_equal(id, prog->aux->dst_attach->id))) { ^ kernel/bpf/syscall.c:2840:8: note: did you mean 'bpf_tramp_id_is_empty'? kernel/bpf/syscall.c:2839:8: note: 'bpf_tramp_id_is_empty' declared here (!bpf_tramp_id_is_empty(id) && ^ kernel/bpf/syscall.c:2854:12: error: implicit declaration of function 'bpf_tramp_attach' [-Werror,-Wimplicit-function-declaration] attach = bpf_tramp_attach(id, tgt_prog, prog); ^ kernel/bpf/syscall.c:2854:10: warning: incompatible integer to pointer conversion assigning to 'struct bpf_tramp_attach *' from 'int' [-Wint-conversion] attach = bpf_tramp_attach(id, tgt_prog, prog); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kernel/bpf/syscall.c:2875:8: error: implicit declaration of function 'bpf_tramp_attach_link' [-Werror,-Wimplicit-function-declaration] err = bpf_tramp_attach_link(attach); ^ kernel/bpf/syscall.c:2898:3: error: implicit declaration of function 'bpf_tramp_detach' [-Werror,-Wimplicit-function-declaration] bpf_tramp_detach(prog->aux->dst_attach); ^ kernel/bpf/syscall.c:2913:2: error: implicit declaration of function 'bpf_tramp_id_free' [-Werror,-Wimplicit-function-declaration] bpf_tramp_id_free(id); ^ 3 warnings and 10 errors generated. -- >> kernel/bpf/verifier.c:13998:7: error: implicit declaration of function 'bpf_tramp_id_single' [-Werror,-Wimplicit-function-declaration] id = bpf_tramp_id_single(NULL, prog->aux->attach_btf, btf_id); ^ kernel/bpf/verifier.c:13998:5: warning: incompatible integer to pointer conversion assigning to 'struct bpf_tramp_id *' from 'int' [-Wint-conversion] id = bpf_tramp_id_single(NULL, prog->aux->attach_btf, btf_id); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kernel/bpf/verifier.c:14004:11: error: implicit declaration of function 'bpf_tramp_attach' [-Werror,-Wimplicit-function-declaration] attach = bpf_tramp_attach(id, tgt_prog, prog); ^ kernel/bpf/verifier.c:14004:9: warning: incompatible integer to pointer conversion assigning to 'struct bpf_tramp_attach *' from 'int' [-Wint-conversion] attach = bpf_tramp_attach(id, tgt_prog, prog); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kernel/bpf/verifier.c:14006:3: error: implicit declaration of function 'bpf_tramp_id_free' [-Werror,-Wimplicit-function-declaration] bpf_tramp_id_free(id); ^ kernel/bpf/verifier.c:14006:3: note: did you mean 'bpf_tramp_id_single'? kernel/bpf/verifier.c:13998:7: note: 'bpf_tramp_id_single' declared here id = bpf_tramp_id_single(NULL, prog->aux->attach_btf, btf_id); ^ 2 warnings and 3 errors generated. vim +/bpf_tramp_id_single +2776 kernel/bpf/syscall.c 2718 2719 static int bpf_tracing_prog_attach(struct bpf_prog *prog, 2720 int tgt_prog_fd, 2721 u32 btf_id) 2722 { 2723 bool prog_extension = prog->type == BPF_PROG_TYPE_EXT; 2724 struct bpf_tramp_attach *attach = NULL; 2725 struct bpf_link_primer link_primer; 2726 struct bpf_prog *tgt_prog = NULL; 2727 struct bpf_tracing_link *link; 2728 struct bpf_tramp_id *id = NULL; 2729 int err; 2730 2731 switch (prog->type) { 2732 case BPF_PROG_TYPE_TRACING: 2733 if (prog->expected_attach_type != BPF_TRACE_FENTRY && 2734 prog->expected_attach_type != BPF_TRACE_FEXIT && 2735 prog->expected_attach_type != BPF_MODIFY_RETURN) { 2736 err = -EINVAL; 2737 goto out_put_prog; 2738 } 2739 break; 2740 case BPF_PROG_TYPE_EXT: 2741 if (prog->expected_attach_type != 0) { 2742 err = -EINVAL; 2743 goto out_put_prog; 2744 } 2745 break; 2746 case BPF_PROG_TYPE_LSM: 2747 if (prog->expected_attach_type != BPF_LSM_MAC) { 2748 err = -EINVAL; 2749 goto out_put_prog; 2750 } 2751 break; 2752 default: 2753 err = -EINVAL; 2754 goto out_put_prog; 2755 } 2756 2757 if (!!tgt_prog_fd != !!btf_id) { 2758 err = -EINVAL; 2759 goto out_put_prog; 2760 } 2761 2762 if (tgt_prog_fd) { 2763 /* For now we only allow new targets for BPF_PROG_TYPE_EXT */ 2764 if (prog->type != BPF_PROG_TYPE_EXT) { 2765 err = -EINVAL; 2766 goto out_put_prog; 2767 } 2768 2769 tgt_prog = bpf_prog_get(tgt_prog_fd); 2770 if (IS_ERR(tgt_prog)) { 2771 err = PTR_ERR(tgt_prog); 2772 tgt_prog = NULL; 2773 goto out_put_prog; 2774 } 2775 > 2776 id = bpf_tramp_id_single(tgt_prog, NULL, btf_id); 2777 if (!id) { 2778 err = -ENOMEM; 2779 goto out_put_prog; 2780 } 2781 } 2782 2783 link = kzalloc(sizeof(*link), GFP_USER); 2784 if (!link) { 2785 err = -ENOMEM; 2786 goto out_put_prog; 2787 } 2788 bpf_link_init(&link->link, BPF_LINK_TYPE_TRACING, 2789 &bpf_tracing_link_lops, prog); 2790 link->attach_type = prog->expected_attach_type; 2791 2792 mutex_lock(&prog->aux->dst_mutex); 2793 2794 if (!prog_extension && prog->aux->attach) { 2795 err = -EBUSY; 2796 goto out_unlock; 2797 } 2798 2799 /* There are a few possible cases here: 2800 * 2801 * - if prog->aux->dst_trampoline is set, the program was just loaded 2802 * and not yet attached to anything, so we can use the values stored 2803 * in prog->aux 2804 * 2805 * - if prog->aux->dst_trampoline is NULL, the program has already been 2806 * attached to a target and its initial target was cleared (below) 2807 * 2808 * - if tgt_prog != NULL, the caller specified tgt_prog_fd + 2809 * target_btf_id using the link_create API. 2810 * 2811 * - if tgt_prog == NULL when this function was called using the old 2812 * raw_tracepoint_open API, and we need a target from prog->aux 2813 * 2814 * - if prog->aux->dst_trampoline and tgt_prog is NULL, the program 2815 * was detached and is going for re-attachment. 2816 */ 2817 if (!prog->aux->dst_attach && !tgt_prog) { 2818 /* 2819 * Allow re-attach for TRACING and LSM programs. If it's 2820 * currently linked, bpf_trampoline_link_prog will fail. 2821 * EXT programs need to specify tgt_prog_fd, so they 2822 * re-attach in separate code path. 2823 */ 2824 if (prog->type != BPF_PROG_TYPE_TRACING && 2825 prog->type != BPF_PROG_TYPE_LSM) { 2826 err = -EINVAL; 2827 goto out_unlock; 2828 } 2829 2830 btf_id = prog->aux->attach_btf_id; 2831 id = bpf_tramp_id_single(NULL, prog->aux->attach_btf, btf_id); 2832 if (!id) { 2833 err = -ENOMEM; 2834 goto out_unlock; 2835 } 2836 } 2837 2838 if (!prog->aux->dst_attach || 2839 (!bpf_tramp_id_is_empty(id) && 2840 bpf_tramp_id_is_equal(id, prog->aux->dst_attach->id))) { 2841 /* If there is no saved target, or the specified target is 2842 * different from the destination specified at load time, we 2843 * need a new trampoline and a check for compatibility 2844 */ 2845 struct bpf_attach_target_info tgt_info = {}; 2846 2847 err = bpf_check_attach_target(NULL, prog, tgt_prog, btf_id, 2848 &tgt_info); 2849 if (err) 2850 goto out_unlock; 2851 2852 id->addr[0] = (void *) tgt_info.tgt_addr; 2853 2854 attach = bpf_tramp_attach(id, tgt_prog, prog); 2855 if (IS_ERR(attach)) { 2856 err = PTR_ERR(attach); 2857 goto out_unlock; 2858 } 2859 } else { 2860 /* The caller didn't specify a target, or the target was the 2861 * same as the destination supplied during program load. This 2862 * means we can reuse the trampoline and reference from program 2863 * load time, and there is no need to allocate a new one. This 2864 * can only happen once for any program, as the saved values in 2865 * prog->aux are cleared below. 2866 */ 2867 attach = prog->aux->dst_attach; 2868 tgt_prog = prog->aux->dst_prog; 2869 } 2870 2871 err = bpf_link_prime(&link->link, &link_primer); 2872 if (err) 2873 goto out_unlock; 2874 2875 err = bpf_tramp_attach_link(attach); 2876 if (err) { 2877 bpf_link_cleanup(&link_primer); 2878 link = NULL; 2879 goto out_unlock; 2880 } 2881 2882 link->tgt_prog = tgt_prog; 2883 if (prog_extension) 2884 link->attach = attach; 2885 else 2886 prog->aux->attach = attach; 2887 2888 /* Always clear the trampoline and target prog from prog->aux to make 2889 * sure the original attach destination is not kept alive after a 2890 * program is (re-)attached to another target. 2891 */ 2892 if (prog->aux->dst_prog && 2893 (tgt_prog_fd || attach != prog->aux->dst_attach)) 2894 /* got extra prog ref from syscall, or attaching to different prog */ 2895 bpf_prog_put(prog->aux->dst_prog); 2896 if (prog->aux->dst_attach && attach != prog->aux->dst_attach) 2897 /* we allocated a new trampoline, so free the old one */ 2898 bpf_tramp_detach(prog->aux->dst_attach); 2899 2900 prog->aux->dst_prog = NULL; 2901 prog->aux->dst_attach = NULL; 2902 mutex_unlock(&prog->aux->dst_mutex); 2903 2904 return bpf_link_settle(&link_primer); 2905 out_unlock: 2906 if (attach && attach != prog->aux->dst_attach) 2907 bpf_tramp_detach(attach); 2908 mutex_unlock(&prog->aux->dst_mutex); 2909 kfree(link); 2910 out_put_prog: 2911 if (tgt_prog_fd && tgt_prog) 2912 bpf_prog_put(tgt_prog); 2913 bpf_tramp_id_free(id); 2914 return err; 2915 } 2916 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org --wRRV7LY7NUeQGEoC Content-Type: application/gzip Content-Disposition: attachment; filename=".config.gz" Content-Transfer-Encoding: base64 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 dZtEHDijLXWa4f8LlvTbZqBsAQA= --wRRV7LY7NUeQGEoC-- From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============2819158365647933022==" MIME-Version: 1.0 From: kernel test robot To: kbuild-all@lists.01.org Subject: [jolsa-perf:bpf/batch 16/29] kernel/bpf/syscall.c:2776:8: error: implicit declaration of function 'bpf_tramp_id_single' Date: Fri, 19 Nov 2021 01:01:45 +0800 Message-ID: <202111190134.VHanZU6M-lkp@intel.com> List-Id: --===============2819158365647933022== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable tree: https://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git bpf/= batch head: 5f1f613266bf58f8424a93e1f8b99c4ac8fa6c2b commit: 378851fb026c8aeef2c2f622957a91a1f0fae87f [16/29] bpf: Add bpf_tramp= _id_single function config: hexagon-randconfig-r035-20211118 (attached as .config) reproduce (this is a W=3D1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/= make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git/co= mmit/?id=3D378851fb026c8aeef2c2f622957a91a1f0fae87f git remote add jolsa-perf https://git.kernel.org/pub/scm/linux/kern= el/git/jolsa/perf.git git fetch --no-tags jolsa-perf bpf/batch git checkout 378851fb026c8aeef2c2f622957a91a1f0fae87f # save the attached .config to linux build tree COMPILER_INSTALL_PATH=3D$HOME/0day COMPILER=3Dclang make.cross W=3D= 1 ARCH=3Dhexagon = If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): kernel/bpf/syscall.c:2668:15: error: implicit declaration of function 'b= pf_tramp_attach_unlink' [-Werror,-Wimplicit-function-declaration] WARN_ON_ONCE(bpf_tramp_attach_unlink(attach)); ^ kernel/bpf/syscall.c:2672:2: error: implicit declaration of function 'bp= f_tramp_detach' [-Werror,-Wimplicit-function-declaration] bpf_tramp_detach(attach); ^ >> kernel/bpf/syscall.c:2776:8: error: implicit declaration of function 'bp= f_tramp_id_single' [-Werror,-Wimplicit-function-declaration] id =3D bpf_tramp_id_single(tgt_prog, NULL, btf_id); ^ kernel/bpf/syscall.c:2776:6: warning: incompatible integer to pointer co= nversion assigning to 'struct bpf_tramp_id *' from 'int' [-Wint-conversion] id =3D bpf_tramp_id_single(tgt_prog, NULL, btf_id); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kernel/bpf/syscall.c:2831:8: error: implicit declaration of function 'bp= f_tramp_id_single' [-Werror,-Wimplicit-function-declaration] id =3D bpf_tramp_id_single(NULL, prog->aux->attach_btf, = btf_id); ^ kernel/bpf/syscall.c:2831:6: warning: incompatible integer to pointer co= nversion assigning to 'struct bpf_tramp_id *' from 'int' [-Wint-conversion] id =3D bpf_tramp_id_single(NULL, prog->aux->attach_btf, = btf_id); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~= ~~~~~ kernel/bpf/syscall.c:2839:8: error: implicit declaration of function 'bp= f_tramp_id_is_empty' [-Werror,-Wimplicit-function-declaration] (!bpf_tramp_id_is_empty(id) && ^ kernel/bpf/syscall.c:2840:8: error: implicit declaration of function 'bp= f_tramp_id_is_equal' [-Werror,-Wimplicit-function-declaration] bpf_tramp_id_is_equal(id, prog->aux->dst_attach->id))) { ^ kernel/bpf/syscall.c:2840:8: note: did you mean 'bpf_tramp_id_is_empty'? kernel/bpf/syscall.c:2839:8: note: 'bpf_tramp_id_is_empty' declared here (!bpf_tramp_id_is_empty(id) && ^ kernel/bpf/syscall.c:2854:12: error: implicit declaration of function 'b= pf_tramp_attach' [-Werror,-Wimplicit-function-declaration] attach =3D bpf_tramp_attach(id, tgt_prog, prog); ^ kernel/bpf/syscall.c:2854:10: warning: incompatible integer to pointer c= onversion assigning to 'struct bpf_tramp_attach *' from 'int' [-Wint-conver= sion] attach =3D bpf_tramp_attach(id, tgt_prog, prog); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kernel/bpf/syscall.c:2875:8: error: implicit declaration of function 'bp= f_tramp_attach_link' [-Werror,-Wimplicit-function-declaration] err =3D bpf_tramp_attach_link(attach); ^ kernel/bpf/syscall.c:2898:3: error: implicit declaration of function 'bp= f_tramp_detach' [-Werror,-Wimplicit-function-declaration] bpf_tramp_detach(prog->aux->dst_attach); ^ kernel/bpf/syscall.c:2913:2: error: implicit declaration of function 'bp= f_tramp_id_free' [-Werror,-Wimplicit-function-declaration] bpf_tramp_id_free(id); ^ 3 warnings and 10 errors generated. -- >> kernel/bpf/verifier.c:13998:7: error: implicit declaration of function '= bpf_tramp_id_single' [-Werror,-Wimplicit-function-declaration] id =3D bpf_tramp_id_single(NULL, prog->aux->attach_btf, btf_id); ^ kernel/bpf/verifier.c:13998:5: warning: incompatible integer to pointer = conversion assigning to 'struct bpf_tramp_id *' from 'int' [-Wint-conversio= n] id =3D bpf_tramp_id_single(NULL, prog->aux->attach_btf, btf_id); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kernel/bpf/verifier.c:14004:11: error: implicit declaration of function = 'bpf_tramp_attach' [-Werror,-Wimplicit-function-declaration] attach =3D bpf_tramp_attach(id, tgt_prog, prog); ^ kernel/bpf/verifier.c:14004:9: warning: incompatible integer to pointer = conversion assigning to 'struct bpf_tramp_attach *' from 'int' [-Wint-conve= rsion] attach =3D bpf_tramp_attach(id, tgt_prog, prog); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kernel/bpf/verifier.c:14006:3: error: implicit declaration of function '= bpf_tramp_id_free' [-Werror,-Wimplicit-function-declaration] bpf_tramp_id_free(id); ^ kernel/bpf/verifier.c:14006:3: note: did you mean 'bpf_tramp_id_single'? kernel/bpf/verifier.c:13998:7: note: 'bpf_tramp_id_single' declared here id =3D bpf_tramp_id_single(NULL, prog->aux->attach_btf, btf_id); ^ 2 warnings and 3 errors generated. vim +/bpf_tramp_id_single +2776 kernel/bpf/syscall.c 2718 = 2719 static int bpf_tracing_prog_attach(struct bpf_prog *prog, 2720 int tgt_prog_fd, 2721 u32 btf_id) 2722 { 2723 bool prog_extension =3D prog->type =3D=3D BPF_PROG_TYPE_EXT; 2724 struct bpf_tramp_attach *attach =3D NULL; 2725 struct bpf_link_primer link_primer; 2726 struct bpf_prog *tgt_prog =3D NULL; 2727 struct bpf_tracing_link *link; 2728 struct bpf_tramp_id *id =3D NULL; 2729 int err; 2730 = 2731 switch (prog->type) { 2732 case BPF_PROG_TYPE_TRACING: 2733 if (prog->expected_attach_type !=3D BPF_TRACE_FENTRY && 2734 prog->expected_attach_type !=3D BPF_TRACE_FEXIT && 2735 prog->expected_attach_type !=3D BPF_MODIFY_RETURN) { 2736 err =3D -EINVAL; 2737 goto out_put_prog; 2738 } 2739 break; 2740 case BPF_PROG_TYPE_EXT: 2741 if (prog->expected_attach_type !=3D 0) { 2742 err =3D -EINVAL; 2743 goto out_put_prog; 2744 } 2745 break; 2746 case BPF_PROG_TYPE_LSM: 2747 if (prog->expected_attach_type !=3D BPF_LSM_MAC) { 2748 err =3D -EINVAL; 2749 goto out_put_prog; 2750 } 2751 break; 2752 default: 2753 err =3D -EINVAL; 2754 goto out_put_prog; 2755 } 2756 = 2757 if (!!tgt_prog_fd !=3D !!btf_id) { 2758 err =3D -EINVAL; 2759 goto out_put_prog; 2760 } 2761 = 2762 if (tgt_prog_fd) { 2763 /* For now we only allow new targets for BPF_PROG_TYPE_EXT */ 2764 if (prog->type !=3D BPF_PROG_TYPE_EXT) { 2765 err =3D -EINVAL; 2766 goto out_put_prog; 2767 } 2768 = 2769 tgt_prog =3D bpf_prog_get(tgt_prog_fd); 2770 if (IS_ERR(tgt_prog)) { 2771 err =3D PTR_ERR(tgt_prog); 2772 tgt_prog =3D NULL; 2773 goto out_put_prog; 2774 } 2775 = > 2776 id =3D bpf_tramp_id_single(tgt_prog, NULL, btf_id); 2777 if (!id) { 2778 err =3D -ENOMEM; 2779 goto out_put_prog; 2780 } 2781 } 2782 = 2783 link =3D kzalloc(sizeof(*link), GFP_USER); 2784 if (!link) { 2785 err =3D -ENOMEM; 2786 goto out_put_prog; 2787 } 2788 bpf_link_init(&link->link, BPF_LINK_TYPE_TRACING, 2789 &bpf_tracing_link_lops, prog); 2790 link->attach_type =3D prog->expected_attach_type; 2791 = 2792 mutex_lock(&prog->aux->dst_mutex); 2793 = 2794 if (!prog_extension && prog->aux->attach) { 2795 err =3D -EBUSY; 2796 goto out_unlock; 2797 } 2798 = 2799 /* There are a few possible cases here: 2800 * 2801 * - if prog->aux->dst_trampoline is set, the program was just load= ed 2802 * and not yet attached to anything, so we can use the values sto= red 2803 * in prog->aux 2804 * 2805 * - if prog->aux->dst_trampoline is NULL, the program has already = been 2806 * attached to a target and its initial target was cleared= (below) 2807 * 2808 * - if tgt_prog !=3D NULL, the caller specified tgt_prog_fd + 2809 * target_btf_id using the link_create API. 2810 * 2811 * - if tgt_prog =3D=3D NULL when this function was called using th= e old 2812 * raw_tracepoint_open API, and we need a target from prog->aux 2813 * 2814 * - if prog->aux->dst_trampoline and tgt_prog is NULL, the program 2815 * was detached and is going for re-attachment. 2816 */ 2817 if (!prog->aux->dst_attach && !tgt_prog) { 2818 /* 2819 * Allow re-attach for TRACING and LSM programs. If it's 2820 * currently linked, bpf_trampoline_link_prog will fail. 2821 * EXT programs need to specify tgt_prog_fd, so they 2822 * re-attach in separate code path. 2823 */ 2824 if (prog->type !=3D BPF_PROG_TYPE_TRACING && 2825 prog->type !=3D BPF_PROG_TYPE_LSM) { 2826 err =3D -EINVAL; 2827 goto out_unlock; 2828 } 2829 = 2830 btf_id =3D prog->aux->attach_btf_id; 2831 id =3D bpf_tramp_id_single(NULL, prog->aux->attach_btf, btf_id); 2832 if (!id) { 2833 err =3D -ENOMEM; 2834 goto out_unlock; 2835 } 2836 } 2837 = 2838 if (!prog->aux->dst_attach || 2839 (!bpf_tramp_id_is_empty(id) && 2840 bpf_tramp_id_is_equal(id, prog->aux->dst_attach->id))) { 2841 /* If there is no saved target, or the specified target is 2842 * different from the destination specified at load time, we 2843 * need a new trampoline and a check for compatibility 2844 */ 2845 struct bpf_attach_target_info tgt_info =3D {}; 2846 = 2847 err =3D bpf_check_attach_target(NULL, prog, tgt_prog, btf_id, 2848 &tgt_info); 2849 if (err) 2850 goto out_unlock; 2851 = 2852 id->addr[0] =3D (void *) tgt_info.tgt_addr; 2853 = 2854 attach =3D bpf_tramp_attach(id, tgt_prog, prog); 2855 if (IS_ERR(attach)) { 2856 err =3D PTR_ERR(attach); 2857 goto out_unlock; 2858 } 2859 } else { 2860 /* The caller didn't specify a target, or the target was the 2861 * same as the destination supplied during program load. This 2862 * means we can reuse the trampoline and reference from program 2863 * load time, and there is no need to allocate a new one. This 2864 * can only happen once for any program, as the saved values in 2865 * prog->aux are cleared below. 2866 */ 2867 attach =3D prog->aux->dst_attach; 2868 tgt_prog =3D prog->aux->dst_prog; 2869 } 2870 = 2871 err =3D bpf_link_prime(&link->link, &link_primer); 2872 if (err) 2873 goto out_unlock; 2874 = 2875 err =3D bpf_tramp_attach_link(attach); 2876 if (err) { 2877 bpf_link_cleanup(&link_primer); 2878 link =3D NULL; 2879 goto out_unlock; 2880 } 2881 = 2882 link->tgt_prog =3D tgt_prog; 2883 if (prog_extension) 2884 link->attach =3D attach; 2885 else 2886 prog->aux->attach =3D attach; 2887 = 2888 /* Always clear the trampoline and target prog from prog->aux to ma= ke 2889 * sure the original attach destination is not kept alive after a 2890 * program is (re-)attached to another target. 2891 */ 2892 if (prog->aux->dst_prog && 2893 (tgt_prog_fd || attach !=3D prog->aux->dst_attach)) 2894 /* got extra prog ref from syscall, or attaching to different prog= */ 2895 bpf_prog_put(prog->aux->dst_prog); 2896 if (prog->aux->dst_attach && attach !=3D prog->aux->dst_attach) 2897 /* we allocated a new trampoline, so free the old one */ 2898 bpf_tramp_detach(prog->aux->dst_attach); 2899 = 2900 prog->aux->dst_prog =3D NULL; 2901 prog->aux->dst_attach =3D NULL; 2902 mutex_unlock(&prog->aux->dst_mutex); 2903 = 2904 return bpf_link_settle(&link_primer); 2905 out_unlock: 2906 if (attach && attach !=3D prog->aux->dst_attach) 2907 bpf_tramp_detach(attach); 2908 mutex_unlock(&prog->aux->dst_mutex); 2909 kfree(link); 2910 out_put_prog: 2911 if (tgt_prog_fd && tgt_prog) 2912 bpf_prog_put(tgt_prog); 2913 bpf_tramp_id_free(id); 2914 return err; 2915 } 2916 = --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============2819158365647933022== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 --===============2819158365647933022==--