From nobody Thu Apr 2 17:22:44 2026 Received: from mail-pf1-f195.google.com (mail-pf1-f195.google.com [209.85.210.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 34DDF36B07C for ; Wed, 11 Feb 2026 12:57:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770814669; cv=none; b=ODZhQfOBgjxtZU2Pu754/CPUwKxCj4hjrxJEmvlYRk4/+qs/HPUeOTedAdkqyRvYhufVT65uLCqUAYFZdXAwjqat6Z+oB4VsNplFI0hdMncFxlwZ9RGx+lInhLTb/Gh+4yJnXbO8gj3A4wUa1M1wBMlXES9mgAMA4E54cn7YUh8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770814669; c=relaxed/simple; bh=hCVSHo9DQGfxm2r1+JG9k4GYwgUeT8hz5Nu8FnCJYIY=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=Waj9K8tmLE+x5DGAuR1dRP7cg+4BZR1EtvXEi+WzXeLOi0eunINz6kaMaOpMHSRcXQKcZ1f65reIJvUHHFx2aoIdvKIv7mWAyU1izHjA4Bd7zio6iIzJMgmuvrDj77IyxZDr/VLG4xC6BZ1nE0unXfMVDLwo19Hh1OBZu0m+gj8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Hoj7hFRN; arc=none smtp.client-ip=209.85.210.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Hoj7hFRN" Received: by mail-pf1-f195.google.com with SMTP id d2e1a72fcca58-824abe734afso4331b3a.0 for ; Wed, 11 Feb 2026 04:57:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770814667; x=1771419467; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=1TtYZ5EC3dCtBT+uwBuJa6C5l//iYphnHtWsOZ40juE=; b=Hoj7hFRNGBZYhz4I25fS2BFRaWmQanTXW2Ax9MCL3ooK+hrwj8VK+ZQoMmdYAZ/T19 cIW9+2wqltp0MYyjy9sgzZO7KYEYFgqALHzfJRTJ5Y8mf6tYe1S7kqJfLm8LupH/EN/6 DgQUYiYAeH4cka6oDZSJhtHMQrAVRb4brzq/vVeIENZBKwcb+tPGnTGbJOG48U6a14xj PqFTtmXAq9TN/LXpqX+L/8Q46JToue0igEoYbJksN8Fq6X1HajnCdOYxwTFBDpMWtCsF DWC4HOq18c/tBF7vIq2WcG0C5XUdvzj3IPg8WYM7xpBQqcCgjWQzfq6gaX4I1AAYUZm8 j3sw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770814667; x=1771419467; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=1TtYZ5EC3dCtBT+uwBuJa6C5l//iYphnHtWsOZ40juE=; b=i1LbMoxfVzU8SAv1ngodsQvOCRShAIQeoR8kQzjelyYeO5jnFc1PCRJ2KE9aLtlJ0U +NlbJOmy1TkhdSVq6s/Nk0ZGEZXot1iF/vKxpQig8IqXIvqww2KQUoO9JdGc+0R9Gkqm wpCKrlfjulHwxnqbXzbGzTVY2DGm9n/Ns37z76zlShGZA/bTLqdcm4XsklKa1v/99zQ1 PQUF7hd0lLknG9Pt82T8yy5MPIaUmPPZripPZz+lFr1YbSZY4+anbgb9VAHsGcNbQLqf CPpf5T0qy2tWW0Kw8skufsNAmduyEW5thmmIvcmIT2QuMvzQENCsGXOn8E1dev1jl1Id Z/yw== X-Forwarded-Encrypted: i=1; AJvYcCVCWCYcoq5wDqwtNoZHwGH5WrFpW8Tr4wY6JapV9mIJOCgAim0rd3Y+mQxrESn/l7SVs/qvVEAa8d+b8Fs=@vger.kernel.org X-Gm-Message-State: AOJu0YyQ0Q6BS6tV23EK/WONw7sBr92WjCoKy3d2YQ/e9o/mLztr9dmA Tx6tmkiZ4mKuXhpp0ghbU2jKZLB/R+kMwR0uIpfch3uMeWdxCJIcxcEt X-Gm-Gg: AZuq6aLhG4T2Bmdjc+vI/1HQ/gYzzqJ8UP8XUSxb7FXrUqR+yoIbq40DXFyWjN2aQfA 8V0vf0QHo2/IWOA6ko+/GFMEOGfF9PT3uthuMPqf5W1N3buZ8RYx6hdzko6XLCEynpIOZiuvaD3 e7557dxiIw4brramT1X9euhlleQUjlVKwspoxB2r9ateP1mtHd2KfhO/k6UjOe3vjI9ecDO7Xij q+ZWjRTyDyI28+daqbJSU2b2EXCCffZ/OMxACaK8am7oYCpKCvMxeNoMLe6XFGmdeE2+Cfzq5Mv 4Ae1Qp/CjHceP/6B8kbdXGDfcFbJEdOASiHMh3bkz6pMgg2pZzIs5Fc6vYSQSPFCyqwJm8LTGAl Jy2XgeWcsCII4Z1JraSF1iJJ8Zm+pVL/+auVNzQ2HO3p4lS7oEyiADYjA60zGIbDIyzrrBHA8yl V02c7EtQckusdCxKCpzewP X-Received: by 2002:a05:6a21:4612:b0:38e:7422:ac83 with SMTP id adf61e73a8af0-3942e35ffe9mr2443996637.10.1770814667430; Wed, 11 Feb 2026 04:57:47 -0800 (PST) Received: from 7950hx ([103.173.155.241]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c6e1969f314sm2198284a12.8.2026.02.11.04.57.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 04:57:47 -0800 (PST) From: Menglong Dong X-Google-Original-From: Menglong Dong To: andrii@kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, martin.lau@linux.dev, eddyz87@gmail.com, song@kernel.org, yonghong.song@linux.dev, john.fastabend@gmail.com, kpsingh@kernel.org, sdf@fomichev.me, haoluo@google.com, jolsa@kernel.org, bpf@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH bpf-next] libbpf: skip compat check for session kfuncs Date: Wed, 11 Feb 2026 20:57:37 +0800 Message-ID: <20260211125737.1315848-1-dongml2@chinatelecom.cn> X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The function prototype of bpf_session_{cookie,is_return} is changed in the commit 8fe4dc4f6456 ("bpf: change prototype of bpf_session_{cookie,is_return}"), which is not friendly to the old kernel, as the libbpf will fail on the compatible checking. Therefore, let's skip the checking of bpf_session_{cookie,is_return} in libbpf, and just let the kernel do the checking. Signed-off-by: Menglong Dong --- tools/lib/bpf/libbpf.c | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index 0c8bf0b5cce4..71bdd1c1ac39 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -8557,6 +8557,12 @@ static int find_ksym_btf_id(struct bpf_object *obj, = const char *ksym_name, return id; } =20 +static bool kfunc_skip_compat_check(const char *name) +{ + return name && (strcmp(name, "bpf_session_cookie") =3D=3D 0 || + strcmp(name, "bpf_session_is_return") =3D=3D 0); +} + static int bpf_object__resolve_ksym_var_btf_id(struct bpf_object *obj, struct extern_desc *ext) { @@ -8617,12 +8623,13 @@ static int bpf_object__resolve_ksym_func_btf_id(str= uct bpf_object *obj, struct module_btf *mod_btf =3D NULL; const struct btf_type *kern_func; struct btf *kern_btf =3D NULL; + const char *kfunc_name; int ret; =20 local_func_proto_id =3D ext->ksym.type_id; =20 - kfunc_id =3D find_ksym_btf_id(obj, ext->essent_name ?: ext->name, BTF_KIN= D_FUNC, &kern_btf, - &mod_btf); + kfunc_name =3D ext->essent_name ?: ext->name; + kfunc_id =3D find_ksym_btf_id(obj, kfunc_name, BTF_KIND_FUNC, &kern_btf, = &mod_btf); if (kfunc_id < 0) { if (kfunc_id =3D=3D -ESRCH && ext->is_weak) return 0; @@ -8634,16 +8641,18 @@ static int bpf_object__resolve_ksym_func_btf_id(str= uct bpf_object *obj, kern_func =3D btf__type_by_id(kern_btf, kfunc_id); kfunc_proto_id =3D kern_func->type; =20 - ret =3D bpf_core_types_are_compat(obj->btf, local_func_proto_id, - kern_btf, kfunc_proto_id); - if (ret <=3D 0) { - if (ext->is_weak) - return 0; + if (!kfunc_skip_compat_check(kfunc_name)) { + ret =3D bpf_core_types_are_compat(obj->btf, local_func_proto_id, + kern_btf, kfunc_proto_id); + if (ret <=3D 0) { + if (ext->is_weak) + return 0; =20 - pr_warn("extern (func ksym) '%s': func_proto [%d] incompatible with %s [= %d]\n", - ext->name, local_func_proto_id, - mod_btf ? mod_btf->name : "vmlinux", kfunc_proto_id); - return -EINVAL; + pr_warn("extern (func ksym) '%s': func_proto [%d] incompatible with %s = [%d]\n", + ext->name, local_func_proto_id, + mod_btf ? mod_btf->name : "vmlinux", kfunc_proto_id); + return -EINVAL; + } } =20 /* set index for module BTF fd in fd_array, if unset */ --=20 2.53.0