From nobody Sun May 19 12:00:50 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 1BED179D8; Sun, 4 Feb 2024 06:58:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707029910; cv=none; b=cTxSNc4m+cGLKlzZLx4BohzpJintU8Er2pQoPr7EpXi1+9V+1sj4ZlIA5wZlx0lJ/TfSkw050+osMuCF4WdQJYgLziaV5GF/Ek0D7Dj+1dq19qWMYMKdQiYNlooqcCpLqOZbjiq8QMyWA80iKcoc0X6W8s+BCvQMJbOW5VZOqtY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707029910; c=relaxed/simple; bh=k9AifK51mhoszp31sOs1tkzmn8zZLwblUNZUTc+Syx4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=fXQPBtWpZb2EQE+CfPrPU1irddm1144hClORoT/Q3i6WkD1PQXQL9RAfzgl8UUm7kTtVVSLQHyVWHEo4yRaBTpbvG//1Gv8bVhS96ksetOmgLeODP/7KoihoBbok59b9jv9Qza7mVpE8sQzK1CveSMM4UIsOQOeLwrRW4Ak2tVo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=MeGpWVsH; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="MeGpWVsH" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9BB44C433A6; Sun, 4 Feb 2024 06:58:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707029909; bh=k9AifK51mhoszp31sOs1tkzmn8zZLwblUNZUTc+Syx4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MeGpWVsHszAe6Qwk8YETEmU4G7kbRQgMOc7+2wulP+FttF4xExdkfYPUB7MMgjWAl PicjbPRBzX46GhzShBKduYNNxBDickyRpej3ZgDScWjNh3bHaVEf3iVknPN1QODYjL Bx/DgXTjwdyPvvmDsMAt2BuLWDK9QR5QRGAYVK0sYXObmN10NBubtAR5IUYRdGRebP gbsD2XcB5GrIGk34P7iAlzLaFl4jmgTB1lUbByXlA/ajCxSR2wn0+00fuNLU8U7yoJ jQS4zjzaBvJ9jlEOaxQ5Zs8HWwqgePS+CbsiPOeflFTA0fsPTNN+VZTz2/6ku+fX62 kptwyKA5sJLTA== From: Geliang Tang To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Song Liu , Yonghong Song , Matthieu Baerts , Eduard Zingerman , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa Cc: Geliang Tang , bpf@vger.kernel.org, mptcp@lists.linux.dev Subject: [PATCH bpf-next v3 1/2] bpf, btf: Add register_check_missing_btf helper Date: Sun, 4 Feb 2024 14:58:12 +0800 Message-Id: <6dfe28c4045e1a3d31b3ba60dde31c7650ac66df.1707029682.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang This patch extracts duplicate code on error path when btf_get_module_btf() returns NULL from the functions __register_btf_kfunc_id_set() and register_btf_id_dtor_kfuncs() into a new helper named register_check_missing_btf() to check CONFIG_DEBUG_INFO_BTF, CONFIG_DEBUG_INFO_BTF_MODULES and CONFIG_MODULE_ALLOW_BTF_MISMATCH in it. Signed-off-by: Geliang Tang Reported-by: kernel test robot --- kernel/bpf/btf.c | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c index f7725cb6e564..d166c12206ea 100644 --- a/kernel/bpf/btf.c +++ b/kernel/bpf/btf.c @@ -26,6 +26,7 @@ #include #include #include +#include =20 #include =20 @@ -7738,6 +7739,24 @@ static struct btf *btf_get_module_btf(const struct m= odule *module) return btf; } =20 +static int register_check_missing_btf(const struct module *module, const c= har *msg) +{ + if (!module && IS_ENABLED(CONFIG_DEBUG_INFO_BTF)) { + pr_err("missing vmlinux BTF, cannot register %s\n", msg); + return -ENOENT; + } + if (module && IS_ENABLED(CONFIG_DEBUG_INFO_BTF_MODULES)) { + if (IS_ENABLED(CONFIG_MODULE_ALLOW_BTF_MISMATCH)) { + pr_warn("allow module %s BTF mismatch, skip register %s\n", + module->name, msg); + return 0; + } + pr_err("missing module %s BTF, cannot register %s\n", module->name, msg); + return -ENOENT; + } + return 0; +} + BPF_CALL_4(bpf_btf_find_by_name_kind, char *, name, int, name_sz, u32, kin= d, int, flags) { struct btf *btf =3D NULL; @@ -8098,15 +8117,8 @@ static int __register_btf_kfunc_id_set(enum btf_kfun= c_hook hook, int ret, i; =20 btf =3D btf_get_module_btf(kset->owner); - if (!btf) { - if (!kset->owner && IS_ENABLED(CONFIG_DEBUG_INFO_BTF)) { - pr_err("missing vmlinux BTF, cannot register kfuncs\n"); - return -ENOENT; - } - if (kset->owner && IS_ENABLED(CONFIG_DEBUG_INFO_BTF_MODULES)) - pr_warn("missing module BTF, cannot register kfuncs\n"); - return 0; - } + if (!btf) + return register_check_missing_btf(kset->owner, "kfuncs"); if (IS_ERR(btf)) return PTR_ERR(btf); =20 @@ -8214,17 +8226,8 @@ int register_btf_id_dtor_kfuncs(const struct btf_id_= dtor_kfunc *dtors, u32 add_c int ret; =20 btf =3D btf_get_module_btf(owner); - if (!btf) { - if (!owner && IS_ENABLED(CONFIG_DEBUG_INFO_BTF)) { - pr_err("missing vmlinux BTF, cannot register dtor kfuncs\n"); - return -ENOENT; - } - if (owner && IS_ENABLED(CONFIG_DEBUG_INFO_BTF_MODULES)) { - pr_err("missing module BTF, cannot register dtor kfuncs\n"); - return -ENOENT; - } - return 0; - } + if (!btf) + return register_check_missing_btf(owner, "dtor kfuncs"); if (IS_ERR(btf)) return PTR_ERR(btf); =20 --=20 2.40.1 From nobody Sun May 19 12:00:50 2024 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 44E3079C2; Sun, 4 Feb 2024 06:58:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707029914; cv=none; b=jf8LuZ0nCfuXWGK28+5hyf9aQrps+oxSaZS0aJBGdfk2Hba0qMEHD/k8g+BjcS5/rHbhG3nGzreTxy5iR19kuMWP/naaYskkL/58As+IKiFzYs3dUqwf5bglpLyVarrkQD2pGjj5f51sMIHEIbtcEH5xlseIySkIgNw2sWXs/dc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707029914; c=relaxed/simple; bh=OjXAoTGCiW2e0cWcTMfwDHj2YAPWCF2ECmSMeQkoff8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=H3h7BBzdSudsSZmsSAbDAY4kft2tlFArWF9pe/mobYuUBhLkZSYYCBFP7VsGDLbHEIpAXwDAaWYLBvNWOlSw4p4SFjsqA4ZlL896J2AVqWvMTzsYHm8oYrq/Ek2vKjr4FZyfeNF76B5Nb2uDjLlZZR8x5wb5BMZa96SriYItOHk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=t76Ln2VA; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="t76Ln2VA" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 09DD3C433F1; Sun, 4 Feb 2024 06:58:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707029913; bh=OjXAoTGCiW2e0cWcTMfwDHj2YAPWCF2ECmSMeQkoff8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=t76Ln2VAjbScPqTgg6Vq9mc8BuxvFnYmGccSpFXyKdVHIDZd+QHAqhrXQq65yL+xd CEsoEISALfwSqLFwfdX8TOUo0hKRBrcNNF463DClHlmbMwz1u18VrvUQVaQp5DjDWv mWju0kYPGaWPlmPRiWEzYwOlVfx4gHzq8rN5Uh6pzaRqBxmdCeezvqNE9CA4nF9e9s 5twg9G9ddANgGdG11eLwNc3jLyQ9HwvoC8vFAmsFXLyubG8TpoRqA0poxtQrxkEHFt r+EyhJAggBHGbejKjqT5wtsz3S73XUDhH4LTo2socBNeW+VCJX5o518YNmNYN+osP4 fyvYOG2rHAZHw== From: Geliang Tang To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Song Liu , Yonghong Song , Matthieu Baerts , Eduard Zingerman , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa Cc: Geliang Tang , bpf@vger.kernel.org, mptcp@lists.linux.dev Subject: [PATCH bpf-next v3 2/2] bpf, btf: Check btf for register_bpf_struct_ops Date: Sun, 4 Feb 2024 14:58:13 +0800 Message-Id: <40b390e09ae6003d9dc3c571ae1c5185597e75e3.1707029682.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang Similar to the handling in the functions __register_btf_kfunc_id_set() and register_btf_id_dtor_kfuncs(), this patch uses the newly added helper register_check_missing_btf() and IS_ERR() to check the return value of btf_get_module_btf(). Signed-off-by: Geliang Tang Reported-by: kernel test robot --- kernel/bpf/btf.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c index d166c12206ea..714f13121f1c 100644 --- a/kernel/bpf/btf.c +++ b/kernel/bpf/btf.c @@ -8890,7 +8890,9 @@ int __register_bpf_struct_ops(struct bpf_struct_ops *= st_ops) =20 btf =3D btf_get_module_btf(st_ops->owner); if (!btf) - return -EINVAL; + return register_check_missing_btf(st_ops->owner, "structs"); + if (IS_ERR(btf)) + return PTR_ERR(btf); =20 log =3D kzalloc(sizeof(*log), GFP_KERNEL | __GFP_NOWARN); if (!log) { --=20 2.40.1