From nobody Sat Jun 20 14:14:06 2026 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) (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 9A1F4466B5B for ; Thu, 30 Apr 2026 16:02:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564938; cv=none; b=LPqigLej6HedTP5p9TRyILrLSI0FVTTWlF8FSkcVjevlpToIJVUDF4cKSprFphRsj87Kl9ii76S2G8RTG1Ypx5wxv4BFfNXgcj9hGHydJl1mHOhysspl1dYIT/fGYV+P6SDdSLpEXDrtcSFYeM/aUAlZWQ3znL/68e3LkSmXCEM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564938; c=relaxed/simple; bh=/jGlD16wwf+LKViAk9+60yGEYsvt20pYf1s5W49VBcc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ry+DxitXxN2ZLTtbD0qlO+DhXNndZSkA3fxF5+ZE5jwEC3pz8YNK36fNVfDUYYQoMeZYZzOsFgjv45OtAHW/XxussfLxj5v6rar00CxBCv81JIJ9rWHSxqMv5xXPtAHUMUQrZQ5cXvXCbyXH9I0qHMUMYXD6T8vl8fB1UzkvlD0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=IeOMxe8W; arc=none smtp.client-ip=209.85.167.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="IeOMxe8W" Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-5a40b2d268bso804312e87.3 for ; Thu, 30 Apr 2026 09:02:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777564935; x=1778169735; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=K+aXTQmh1BdIEplotgCd37rKzWea3sfpPCHgEBxHTL4=; b=IeOMxe8WQdn4C06HNCCgDLPsgRsOMfz1EmZIHOx4r/LSApooHjQY28t6YV9ZXBPpHR bhGea/2ZO7y1udRA7hPaqGTxhtmp90uzbS1XjKSoBImnzKRoVHd/mgAvwNiDsAafAQ4F mxR15PJHkLXnsF6bN98zw1HNmnRBeE4vF4rfDge8zviy13i8rwUmfMVGwHyAq0MSqpWf zcPquwDF4MGoDIyCApFElIky3Fb/81eX2BB1gsGKlcojDp5mhawRjZCj7S5qtQdI4Spw Nhea6kBBAZ+R0h4DJBG5xO0wyskbhOPgBV436dq1PCzbH7TOyqPStdeU9I5WI+YkiFpa BM6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777564935; x=1778169735; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=K+aXTQmh1BdIEplotgCd37rKzWea3sfpPCHgEBxHTL4=; b=SG4tbdkUHjvJN4EEHrle8PjLvU2+SzwC4cAgM9O37EyU2YtpKiElKaqCp1jQVbzQPI Px1VFL3ovS0r3DDSoQeK1z+hgQlgZwQ0VbV1bpZurHVaFowioFSdC5rHRPFyo3TvqKB/ e85n1CIXVn/iuvN2e6SbnNDFxBbK1zxz8hHBAH8pzyeKhMy+D+jAhCD7JpXqP1s1BzF2 5bFxlLCmAVKj0Z4w2Yq7nRQDKwyTu2PcbHftjq09egIP3zNj1K9nRQywtuLGkByyXW3Y Iu6vPYIw0+YtcJNpvlWZPOwse+eEtiV1vr8Geht8d7D0Ucl3nCaMfUSyxaCRSjevWhRa S5ow== X-Forwarded-Encrypted: i=1; AFNElJ+0pT1rMjDskL1JnXxKd6BWc4p/ivqRfabxkEpCd45uip2HEMYyzE/a2ybs0XeX4lEevEcCIhYFiI37EEE=@vger.kernel.org X-Gm-Message-State: AOJu0YxlmuE8I+9iOy6pEBfdq8ZrrlXTEKRYE2dUZO4czUj/qcASJ5Kk zDJ3jLjRQimTaMs4ZYVE6KbckgihRI6eJyLrrJiGekHixi1lgn3UCKpSikXvnQMZ8Bc= X-Gm-Gg: AeBDietoj/7YjO2ng+kk9YNv7m0irEJYq+om6gyGG5T8TZYJjyqHQGwwqyHj0OMiLA/ qG42M8ZbN2w0uLSdgu4y074rZt62QQsz64/W5YLmXg5aCunaEzGkUohFQ/PcBWPoAE7ntdxyDHp H4isenyCb353viDMTLi6+lHrfaGP8MkiUCeFkkLZdyb9bCy/TyfghPjcrUpPceB9qqcCOILtGM7 Ye47Ok71CD/tLb24/PZraDwgFIOJC94xVWJtMbcgJ65D+5hAxxGnHqjGobmUlJ+dpkrt6n+hchj nD4EMJLHrARsIJWq0LVRwU3LcFJXLUSX+QMcIOp9D38Ozvjszy/gSDH8N0JJHTJUcPdlYCuUwjG ZnjluZxjPqHvTP8B3xNRVGoEHb/yfCBKe2LlNzkdky8sSTbV4t6ykbqZJ2urKb40u/r1rGMFVdV l2mF+iye5Ybd2VzjuBExQaolCK X-Received: by 2002:a05:6512:10d6:b0:5a3:eb4b:37a7 with SMTP id 2adb3069b0e04-5a8522ab50fmr1319526e87.6.1777564934664; Thu, 30 Apr 2026 09:02:14 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7bd551512bdsm10152657b3.47.2026.04.30.09.02.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 09:02:13 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 13:02:02 -0300 Subject: [PATCH bpf-next v11 01/11] selftests/bpf: Add BPF_STRICT_BUILD toggle Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260430-selftests-bpf_misconfig-v11-1-e11f7a8c4fdc@suse.com> References: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1777564926; l=1573; i=rbm@suse.com; h=from:subject:message-id; bh=/jGlD16wwf+LKViAk9+60yGEYsvt20pYf1s5W49VBcc=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QJUVh+79E1cnGOyYiZVVw/mextbzRhPani9Cm+ckZYGaMiLsJdxWMvImXEI3Gf7pAz2LU6gJTqa sWme+Rx4bBwA= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g Distro kernels often lack BTF types or kernel features required by some BPF selftests, causing the build to abort on the first failure and preventing the remaining tests from running. Add BPF_STRICT_BUILD (default 1) to control build failure tolerance. When set to 0, the PERMISSIVE make variable is assigned a non-empty value that subsequent Makefile rules use to make individual build steps non-fatal. When set to 1 (the default), the build fails on any error, preserving the existing behavior for CI and direct builds. Users can opt in to permissive mode on the command line: make -C tools/testing/selftests \ TARGETS=3Dbpf SKIP_TARGETS=3D BPF_STRICT_BUILD=3D0 Suggested-by: Alan Maguire Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- tools/testing/selftests/bpf/Makefile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests= /bpf/Makefile index 97ee61f2ade5..6094fe99b5f6 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -44,6 +44,12 @@ SKIP_LLVM ?=3D SKIP_LIBBFD ?=3D SKIP_CRYPTO ?=3D =20 +# When BPF_STRICT_BUILD is 1, any BPF object, skeleton, test object, or +# benchmark compilation failure is fatal. Set to 0 to tolerate failures +# and continue building the remaining tests. +BPF_STRICT_BUILD ?=3D 1 +PERMISSIVE :=3D $(filter 0,$(BPF_STRICT_BUILD)) + ifeq ($(srctree),) srctree :=3D $(patsubst %/,%,$(dir $(CURDIR))) srctree :=3D $(patsubst %/,%,$(dir $(srctree))) --=20 2.54.0 From nobody Sat Jun 20 14:14:06 2026 Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) (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 80F3446AED1 for ; Thu, 30 Apr 2026 16:02:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564943; cv=none; b=XA1Lt3OSzFrmipwvR9tCE4wWJb3PBEP/h8/fhMxo0DvnSZLEkoXRi9QUb1rPgVxU2ew/AWY9tIV89ihBSW8nVlTUERSezOx+KudEO53Ll1WU5WeD3b1jDHS0IShRytoRK75oPPtBBPQYp9AnV+UGGQBGLtAr6YX0XwL6nhRSmSc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564943; c=relaxed/simple; bh=0QJYdccmCS5Xa21Yb/0zhA86xvgSH0oN6kSd6sMETRU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FqYDX61l/+suy1LA/EZUaqEVjAqx6FSXfPvrnYmqhSP3iNOvp9FO1npQuFqmYir8P4u7z990o4fJcNJFpbdlZasyCyTunjtGOZIj7dhs1b+IDQ4NN7veo4nr2RHAY0re/6BYwyipdZihhBX8MAQ2vcqDnxIR1tiQm32YJdcNjtw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=Qi70fw/i; arc=none smtp.client-ip=209.85.218.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="Qi70fw/i" Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-ba7a1cc0380so173255666b.2 for ; Thu, 30 Apr 2026 09:02:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777564940; x=1778169740; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Gd4Mjpp2AlESfBnJvdKqbI6D/125UdC7Iwt7tAYiysY=; b=Qi70fw/ihfBRW0+Q2wbBM5CZaALqnLywVXHP8M/OnSNiHsPWppN0oXtODJezm8vY1Y jF7vxF8P4/Vv11zzQ9cLi97JILJADQeSSdJc6rN2RYDHEfo4D6WOMxPhuv80p1cKJJTl ID7ikeLbBIAmsEP4irIrVI6WUNeOBUGD8g8lx8FLSrkRJI9bDJ+vAJMz3DXKWQTjL1sF k2DgFhsTbZwoIeh5Fm38ZJh/e3ivAuwSmbwF//szu9syLwn82N2ZjW4LtOmrDH6hRGCx OKq+60EulaYRnu/jmkWn9KiMxSJJIm8YXBoyJoBee9AOiC7I0+CyuRIZ34MincKWOMIk BxCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777564940; x=1778169740; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Gd4Mjpp2AlESfBnJvdKqbI6D/125UdC7Iwt7tAYiysY=; b=U2VtcxNto2WZ3d3kLcMhpePOKhJ9ARqInAX4/1HDfPBlDZoKYg0d0Z+p1DzLxl2BXD CkcaIKC30k1WtEo3d5rMtHNDEARaVf6+k4LinzqjHHfEF4RLNTTHtJNe3z8kP3KYaGPI aRmcXEqhkcrIxkIz1ie4oylM9VDBnCXduo+UZhL3fOJRAOOclVCSPSbN99j0IflBp6FU FmynQAr/uljt1acVmwJx537qSKvswxGQDPYyVAddCikC3ALMlwzDM236VsS5tCS91Ch0 GnvJ6crcNVUDHAoEsR0frSx/PvjdY9FnrO7LSrM6G5+FqMhzR4Z3pIJBBAL7xsg8ET3f YSBg== X-Forwarded-Encrypted: i=1; AFNElJ8pVp3RiVzlyWuUl5sKsiChCHudml2jPmi6p/bcoaCJWqh/BFEgiAnIkJAZXwNhhxmxXFwaP3P6guQmQ7c=@vger.kernel.org X-Gm-Message-State: AOJu0Yys0o0ekY0Gy+A4TbZxHFL8m1NxxMyRYAb01M1BKssZr5LuPQm3 MMD6pmmCdXePqEBGA9kNqKMupaXVdTgBjyve7YuknlNkGzWhdXgd8iexOuSrrzZuBLs= X-Gm-Gg: AeBDieu8JLfcaKbSvAfeCaQyy3U45/kR37ifoevHSTAcq6+B5DG/E/i/Gqlar+jgRzy z2v1uNex9dP5wjKMaERwApPdWt3IuxPFDNkNpd1o2nFOFGI7v4y8MwI3cYuqYRi63P60svhhepm tL8T6pKDAqqAL9eyGVzugwEE5CrnC76Ab/b3EhA21MzzUldn5BjOfeqj2nPwPifWCkTfgxfk+qG qoPI32+YBOLs2OdCtnpvELU8yna5KZ0/nARkAvpP6Tsj2C1bjKePJsnXLiMTo+uP+ikOsFF9zLt zj3e0Qye7ZaSsThMbZiJ9Maq+bs8589R4ieH2EVRXq9ObQ8JPc8KuHKHI8wR28M6uWFT7PogD2E +ObDtKFAFZleDI715F1ZB1wp+Z222tZrrYQ+dyfuc72uPYBdunXlICl7sCdbrECVxa3gNWWt19R vIsp6Ls8KYfcOu1CpR+IPOTbrj X-Received: by 2002:a17:906:f588:b0:ba9:2611:31e6 with SMTP id a640c23a62f3a-bbac47d4771mr267906366b.6.1777564939701; Thu, 30 Apr 2026 09:02:19 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7bd5512bea4sm10122857b3.35.2026.04.30.09.02.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 09:02:18 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 13:02:03 -0300 Subject: [PATCH bpf-next v11 02/11] selftests/bpf: Fix test_kmods KDIR to honor O= and distro kernels Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260430-selftests-bpf_misconfig-v11-2-e11f7a8c4fdc@suse.com> References: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1777564926; l=5932; i=rbm@suse.com; h=from:subject:message-id; bh=0QJYdccmCS5Xa21Yb/0zhA86xvgSH0oN6kSd6sMETRU=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QHFJG2W2igv98If20IRJKII1EhuAUKdgowbWUrCs9ZRJ8UjjdvQo164W21WEYaJyKUyxUH90Es+ QbKQn0xy6kA0= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g test_kmods/Makefile always pointed KDIR at the kernel source tree root, ignoring O=3D and KBUILD_OUTPUT. On distro kernels where the source tree has not been built, the Makefile had no fallback and would fail unconditionally. When O=3D or KBUILD_OUTPUT is set and points at a prepared kernel build directory (one containing Module.symvers), pass it through so kbuild can locate the correct build infrastructure (scripts, Kconfig, etc.). Note that the module artifacts themselves still land in the M=3D directory, which is test_kmods/; O=3D only controls where kbuild finds its build infrastructure. Fall back to /lib/modules/$(uname -r)/build when neither an explicit valid build directory nor an in-tree Module.symvers is present. A selftests-only O=3D value (one that does not contain Module.symvers, e.g. a private output directory) is intentionally not treated as a kernel build directory. Without this guard, a user invoking "make -C tools/testing/selftests/bpf O=3D/tmp/out" would have test_kmods try to use /tmp/out as the kernel build dir and fail. The parent bpf/Makefile resolves O=3D and KBUILD_OUTPUT to absolute paths before invoking the test_kmods sub-make. Without this, $(abspath ...) inside test_kmods/Makefile would resolve relative paths against the sub-make's CWD (test_kmods/) rather than the user's invocation directory. When O=3D is passed to kbuild, also pass KBUILD_OUTPUT=3D$(KMOD_O_VALID) explicitly. The parent invocation lifts KBUILD_OUTPUT into MAKEFLAGS as a command-line variable, which would otherwise suppress kbuild's own "KBUILD_OUTPUT :=3D $(O)" assignment and cause it to use the inherited KBUILD_OUTPUT instead of the validated O=3D. Guard both all and clean against a missing KDIR so the step is silently skipped rather than fatal. Make the parent Makefile's cp conditional so it does not abort when modules were not built. Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- tools/testing/selftests/bpf/Makefile | 10 +++++---- tools/testing/selftests/bpf/test_kmods/Makefile | 30 +++++++++++++++++++++= +--- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests= /bpf/Makefile index 6094fe99b5f6..cc6ee7a2df93 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -296,13 +296,15 @@ $(OUTPUT)/sign-file: ../../../../scripts/sign-file.c # subst() turns the rule into a pattern matching rule $(addprefix test_kmods/,$(subst .ko,%ko,$(TEST_KMODS))): $(VMLINUX_BTF) $(= RESOLVE_BTFIDS) $(wildcard test_kmods/Makefile test_kmods/*.[ch]) $(Q)$(RM) test_kmods/*.ko test_kmods/*.mod.o # force re-compilation - $(Q)$(MAKE) $(submake_extras) -C test_kmods \ - RESOLVE_BTFIDS=3D$(RESOLVE_BTFIDS) \ + $(Q)$(MAKE) $(submake_extras) -C test_kmods \ + $(if $(O),O=3D$(abspath $(O))) \ + $(if $(KBUILD_OUTPUT),KBUILD_OUTPUT=3D$(abspath $(KBUILD_OUTPUT)))\ + RESOLVE_BTFIDS=3D$(RESOLVE_BTFIDS) \ EXTRA_CFLAGS=3D'' EXTRA_LDFLAGS=3D'' =20 $(TEST_KMOD_TARGETS): $(addprefix test_kmods/,$(TEST_KMODS)) $(call msg,MOD,,$@) - $(Q)cp test_kmods/$(@F) $@ + $(Q)$(if $(PERMISSIVE),if [ -f test_kmods/$(@F) ]; then )cp test_kmods/$(= @F) $@$(if $(PERMISSIVE),; fi) =20 =20 DEFAULT_BPFTOOL :=3D $(HOST_SCRATCH_DIR)/sbin/bpftool @@ -718,7 +720,7 @@ $(TRUNNER_LIB_OBJS): $(TRUNNER_OUTPUT)/%.o:$(TOOLSDIR)/= lib/%.c $(TRUNNER_BINARY)-extras: $(TRUNNER_EXTRA_FILES) | $(TRUNNER_OUTPUT) ifneq ($2:$(OUTPUT),:$(shell pwd)) $$(call msg,EXT-COPY,$(TRUNNER_BINARY),$(TRUNNER_EXTRA_FILES)) - $(Q)rsync -aq $$^ $(TRUNNER_OUTPUT)/ + $(Q)rsync -aq $(if $(PERMISSIVE),--ignore-missing-args) $$^ $(TRUNNER_OUT= PUT)/ endif =20 # some X.test.o files have runtime dependencies on Y.bpf.o files diff --git a/tools/testing/selftests/bpf/test_kmods/Makefile b/tools/testin= g/selftests/bpf/test_kmods/Makefile index 63c4d3f6a12f..031c7454ce65 100644 --- a/tools/testing/selftests/bpf/test_kmods/Makefile +++ b/tools/testing/selftests/bpf/test_kmods/Makefile @@ -1,5 +1,16 @@ TEST_KMOD_DIR :=3D $(realpath $(dir $(abspath $(lastword $(MAKEFILE_LIST))= ))) -KDIR ?=3D $(abspath $(TEST_KMOD_DIR)/../../../../..) +SRCTREE_KDIR :=3D $(abspath $(TEST_KMOD_DIR)/../../../../..) +# Honor O=3D/KBUILD_OUTPUT only if they point at a prepared kernel build +# directory (one containing Module.symvers); otherwise treat the value as a +# selftests-only output directory and fall back to in-tree or distro heade= rs. +# The parent bpf/Makefile resolves O=3D/KBUILD_OUTPUT to absolute paths be= fore +# invoking this sub-make so relative paths still anchor to the user's +# invocation directory. +KMOD_O :=3D $(or $(O),$(KBUILD_OUTPUT)) +KMOD_O_VALID :=3D $(if $(KMOD_O),$(if $(wildcard $(KMOD_O)/Module.symvers)= ,$(KMOD_O))) +KDIR ?=3D $(if $(KMOD_O_VALID),$(SRCTREE_KDIR), \ + $(if $(wildcard $(SRCTREE_KDIR)/Module.symvers),$(SRCTREE_KDIR), \ + /lib/modules/$(shell uname -r)/build)) =20 ifeq ($(V),1) Q =3D @@ -14,8 +25,21 @@ $(foreach m,$(MODULES),$(eval obj-m +=3D $(m:.ko=3D.o))) =20 CFLAGS_bpf_testmod.o =3D -I$(src) =20 +# When BPF_STRICT_BUILD !=3D 0, a missing KDIR is fatal (the default). +# When permissive, skip silently. +PERMISSIVE :=3D $(filter 0,$(BPF_STRICT_BUILD)) + all: - $(Q)$(MAKE) -C $(KDIR) M=3D$(TEST_KMOD_DIR) modules +ifeq ($(PERMISSIVE),) + $(Q)$(MAKE) -C $(KDIR) $(if $(KMOD_O_VALID),O=3D$(KMOD_O_VALID) KBUILD_OU= TPUT=3D$(KMOD_O_VALID),KBUILD_OUTPUT=3D) \ + M=3D$(TEST_KMOD_DIR) modules +else ifneq ("$(wildcard $(KDIR))", "") + $(Q)$(MAKE) -C $(KDIR) $(if $(KMOD_O_VALID),O=3D$(KMOD_O_VALID) KBUILD_OU= TPUT=3D$(KMOD_O_VALID),KBUILD_OUTPUT=3D) \ + M=3D$(TEST_KMOD_DIR) modules +endif =20 clean: - $(Q)$(MAKE) -C $(KDIR) M=3D$(TEST_KMOD_DIR) clean +ifneq ("$(wildcard $(KDIR))", "") + $(Q)$(MAKE) -C $(KDIR) $(if $(KMOD_O_VALID),O=3D$(KMOD_O_VALID) KBUILD_OU= TPUT=3D$(KMOD_O_VALID),KBUILD_OUTPUT=3D) \ + M=3D$(TEST_KMOD_DIR) clean +endif --=20 2.54.0 From nobody Sat Jun 20 14:14:06 2026 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) (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 BC16946AEEF for ; Thu, 30 Apr 2026 16:02:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564946; cv=none; b=W6so2W4bUeXQGx39E8JutePCXKFsqVGhR1RLoSgaz56xNhuk03qWoZjy9stwz385ZvQr+9DCup5dYVbWJrC8liRPQg0oL9GXdMsD8WdHdi8ZN9sxZHtTkp+9FRFSJbcAta4oI4BItIIo0Vx4SsfZhfLm/I5DBDbbvT4S53fLFA8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564946; c=relaxed/simple; bh=Z9QzhMA/nmBpTOn+59uKlh4SuEqVq1B7WEVOVvaB7s8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WpfizVQSNJJBJhhVwncEU3zw3sXEMLmeEcJ+1zMQ/fl47TIaY7JbLyBQDjeSTEJ3PI1QJDfsH3Q1ufJa3YiUJYXYGSjrwCYDq6+N123BKXEBsxrpUbTepFwL/7VsQuPhKIhx54yvsOv5mMjuDxtU/qG9rL81U5tPWn8l3Y6/aRc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=Jc4Mr7Mw; arc=none smtp.client-ip=209.85.218.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="Jc4Mr7Mw" Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-bbe539fc355so27212566b.2 for ; Thu, 30 Apr 2026 09:02:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777564943; x=1778169743; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=QiNt5zgA+hxs+nRe0WbTX3KCmUAfHAiSaAWZgK9AmrE=; b=Jc4Mr7Mw/g8sXOL1epMF7m0hVNh6nlSquUnBI7ONH15cyova01Gj/5afondyw8xgXJ Q55CK39cVm6r0CEUb0ocfyRGMGPoyRY9bEQn5oxXYcGp19mLYoq6r+oVQtKIAy+rMUM6 ikA/JZtsdIKGmc86CamdWKGHJu1BkObS2YYufObtkcOkbAcJnJnUoWLcFqzpU6qyXtq2 bZglidZF3VYC6XJAur5BSRH0Yde0pfD+0Ll0G11g6mCpqzXyUo23ASlc46hmNOA2ePbC C8N5iK1Y+JZSSxgRe8gIUrKFYx6diufGTjmqlwHGTT9VvrE+tGYhTVxDVepAebN+pX+u n8bQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777564943; x=1778169743; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=QiNt5zgA+hxs+nRe0WbTX3KCmUAfHAiSaAWZgK9AmrE=; b=mGymUM7TVxQp+xBQNxoHYEm/qOCJ0/6Vm9uIBqho/lpjnfWab1TeIMojnw7w+wwbGH HP3cF0QJitX8Dj/f85uhwuzBgocUlOIZ+z1M8XBxhh3xXnIiSj510MFfpT/E3DDAB+u9 3RK7hPCG2hQGz4X2w7UoTgHlIDr6DdFJS3eXBD0v8I9pR3o+pVVdrVj2GCgHFgqvOTAU FYaTj2zzjnqzg8yBHtOB7n9wnbRitkU3gjNVqaaSD8zM63HD1zJWAtV4Vdvtnrd3dbu8 Fb1WzLSQQGJidP5KfyKP49HjlWwzWI8AMiI6BA5j33ixKec6VPHrcRZzmOVDgui92CAS EZMQ== X-Forwarded-Encrypted: i=1; AFNElJ+WyryHAzHyUxYZw68lED2CCGI6JBzGPJcerWeGkEyk5vF6m95eEGsLaz7LkygYP5hKVw/N9fKgS7rPpuw=@vger.kernel.org X-Gm-Message-State: AOJu0YwHrUhdo+Zm4esYKNgI5tG8gLF53pccDWFmx3b9GaWfqtuMnUit ppnNLtpbloTo1PCMLXKpRmgvubvNiJO0pbg1VyzIEymS7+wOOkUxTYhYajWWlPXUICY= X-Gm-Gg: AeBDievnPUxKCa7K7bO6r+GxTMo8F79pco8jGI25BrkETizNe4osEp4xEJ1yyskctms 4R6maEb+2fgd2e2hYN7lTsLXqUG11xs2neAk83PiS01vFOPdsQB5muTQGEaEQc6WdoQX5PnfAwl 8xxtYz8rbMFqENlDlZU6gUqUI7P2dFFUuoiI6E9OLm6Kbdp9DQLOPB/llhNToaK2W4RMn0m0xct ouADq8OJkPEki5snsodBl7q5yj7ex3FQEGHrQ4B1dgfN/TNoBKgsc02pQJunRMCACAu4usmG5KY ByIv4/rSPafTUAqSOej+wC/MojxcjvOmXOJSdyuXWfa+dhZ4i4dcsq1RK8JOa9Gh9LUrGiLmfLH /hMqNWbRChsB1cUWPzCp/lZp2sEyW9CcgMVU4PC9oiomB8Pzf3hY1zLpM5Ur6QAxYRkVhKptRyn 07wj+/MK2+8O7EldLI+XNn8hCO X-Received: by 2002:a17:907:961c:b0:ba4:94f8:4df with SMTP id a640c23a62f3a-bbac64aa001mr234162966b.17.1777564942849; Thu, 30 Apr 2026 09:02:22 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7bd548a00f3sm11067717b3.0.2026.04.30.09.02.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 09:02:21 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 13:02:04 -0300 Subject: [PATCH bpf-next v11 03/11] selftests/bpf: Tolerate BPF and skeleton generation failures Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260430-selftests-bpf_misconfig-v11-3-e11f7a8c4fdc@suse.com> References: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1777564926; l=9623; i=rbm@suse.com; h=from:subject:message-id; bh=Z9QzhMA/nmBpTOn+59uKlh4SuEqVq1B7WEVOVvaB7s8=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QKDr3l2jPXggoh1qvyJjFzK6txZSylsenhu5rEP4QfeIFE8IXh1IK8AdB9KHqOfvE/dmEZ+vlm+ bmPCx6kWzWQk= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g Some BPF programs cannot be built on distro kernels because required BTF types or features are missing. A single failure currently aborts the selftests/bpf build. Make BPF object and skeleton generation best effort in permissive mode: emit SKIP-BPF or SKIP-SKEL to stderr, remove failed outputs so downstream rules can detect absence, and continue with remaining tests. Apply the same tolerance to linked skeletons (TRUNNER_BPF_SKELS_LINKED), which depend on multiple .bpf.o files and abort the build when any dependency is missing. Note that progress messages (GEN-SKEL, LINK-BPF) are also redirected to stderr as a side effect of rewriting the recipes into single-shell pipelines; the $(call msg,...) macro is a make-recipe construct that cannot be used inside an &&-chained shell command sequence. Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- tools/testing/selftests/bpf/Makefile | 108 +++++++++++++++++++++++--------= ---- 1 file changed, 73 insertions(+), 35 deletions(-) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests= /bpf/Makefile index cc6ee7a2df93..b104c687dcf0 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -485,22 +485,26 @@ $(OUTPUT)/cgroup_getset_retval_hooks.o: cgroup_getset= _retval_hooks.h # $4 - binary name define CLANG_BPF_BUILD_RULE $(call msg,CLNG-BPF,$4,$2) - $(Q)$(CLANG) $3 -O2 $(BPF_TARGET_ENDIAN) -c $1 -mcpu=3Dv3 -o $2 + $(Q)$(CLANG) $3 -O2 $(BPF_TARGET_ENDIAN) -c $1 -mcpu=3Dv3 -o $2 $(if $(PE= RMISSIVE),|| \ + ($(RM) $2; printf ' %-12s %s\n' 'SKIP-BPF' '$(notdir $2)' 1>&2)) endef # Similar to CLANG_BPF_BUILD_RULE, but with disabled alu32 define CLANG_NOALU32_BPF_BUILD_RULE $(call msg,CLNG-BPF,$4,$2) - $(Q)$(CLANG) $3 -O2 $(BPF_TARGET_ENDIAN) -c $1 -mcpu=3Dv2 -o $2 + $(Q)$(CLANG) $3 -O2 $(BPF_TARGET_ENDIAN) -c $1 -mcpu=3Dv2 -o $2 $(if $(PE= RMISSIVE),|| \ + ($(RM) $2; printf ' %-12s %s\n' 'SKIP-BPF' '$(notdir $2)' 1>&2)) endef # Similar to CLANG_BPF_BUILD_RULE, but with cpu-v4 define CLANG_CPUV4_BPF_BUILD_RULE $(call msg,CLNG-BPF,$4,$2) - $(Q)$(CLANG) $3 -O2 $(BPF_TARGET_ENDIAN) -c $1 -mcpu=3Dv4 -o $2 + $(Q)$(CLANG) $3 -O2 $(BPF_TARGET_ENDIAN) -c $1 -mcpu=3Dv4 -o $2 $(if $(PE= RMISSIVE),|| \ + ($(RM) $2; printf ' %-12s %s\n' 'SKIP-BPF' '$(notdir $2)' 1>&2)) endef # Build BPF object using GCC define GCC_BPF_BUILD_RULE $(call msg,GCC-BPF,$4,$2) - $(Q)$(BPF_GCC) $3 -DBPF_NO_PRESERVE_ACCESS_INDEX -Wno-attributes -O2 -c $= 1 -o $2 + $(Q)$(BPF_GCC) $3 -DBPF_NO_PRESERVE_ACCESS_INDEX -Wno-attributes -O2 -c $= 1 -o $2 $(if $(PERMISSIVE),|| \ + ($(RM) $2; printf ' %-12s %s\n' 'SKIP-BPF' '$(notdir $2)' 1>&2)) endef =20 SKEL_BLACKLIST :=3D btf__% test_pinning_invalid.c test_sk_assign.c @@ -607,47 +611,81 @@ $(TRUNNER_BPF_OBJS): $(TRUNNER_OUTPUT)/%.bpf.o: \ $$($$<-$2-CFLAGS),$(TRUNNER_BINARY)) =20 $(TRUNNER_BPF_SKELS): %.skel.h: %.bpf.o $(BPFTOOL) | $(TRUNNER_OUTPUT) - $$(call msg,GEN-SKEL,$(TRUNNER_BINARY),$$@) - $(Q)$$(BPFTOOL) gen object $$(<:.o=3D.linked1.o) $$< - $(Q)$$(BPFTOOL) gen object $$(<:.o=3D.linked2.o) $$(<:.o=3D.linked1.o) - $(Q)$$(BPFTOOL) gen object $$(<:.o=3D.linked3.o) $$(<:.o=3D.linked2.o) - $(Q)diff $$(<:.o=3D.linked2.o) $$(<:.o=3D.linked3.o) - $(Q)$$(BPFTOOL) gen skeleton $$(<:.o=3D.linked3.o) name $$(notdir $$(<:.b= pf.o=3D)) > $$@ - $(Q)$$(BPFTOOL) gen subskeleton $$(<:.o=3D.linked3.o) name $$(notdir $$(<= :.bpf.o=3D)) > $$(@:.skel.h=3D.subskel.h) - $(Q)rm -f $$(<:.o=3D.linked1.o) $$(<:.o=3D.linked2.o) $$(<:.o=3D.linked3.= o) + $(Q)$(if $(PERMISSIVE),if [ ! -f $$< ]; then \ + $$(RM) $$@ $$(@:.skel.h=3D.subskel.h); \ + printf ' %-12s %s\n' 'SKIP-SKEL' '$$(notdir $$@)' 1>&2; \ + exit 0; \ + fi;) \ + printf ' %-12s %s\n' 'GEN-SKEL' '[$(TRUNNER_BINARY)] $$(notdir $$@)' 1>&= 2; \ + $$(BPFTOOL) gen object $$(<:.o=3D.linked1.o) $$< && \ + $$(BPFTOOL) gen object $$(<:.o=3D.linked2.o) $$(<:.o=3D.linked1.o) && \ + $$(BPFTOOL) gen object $$(<:.o=3D.linked3.o) $$(<:.o=3D.linked2.o) && \ + diff $$(<:.o=3D.linked2.o) $$(<:.o=3D.linked3.o) && \ + $$(BPFTOOL) gen skeleton $$(<:.o=3D.linked3.o) name $$(notdir $$(<:.bpf.o= =3D)) > $$@ && \ + $$(BPFTOOL) gen subskeleton $$(<:.o=3D.linked3.o) name $$(notdir $$(<:.bp= f.o=3D)) > $$(@:.skel.h=3D.subskel.h) $(if $(PERMISSIVE),|| { \ + $$(RM) $$@ $$(@:.skel.h=3D.subskel.h); \ + printf ' %-12s %s\n' 'SKIP-SKEL' '$$(notdir $$@)' 1>&2; \ + }) && \ + rm -f $$(<:.o=3D.linked1.o) $$(<:.o=3D.linked2.o) $$(<:.o=3D.linked3.o) =20 $(TRUNNER_BPF_LSKELS): %.lskel.h: %.bpf.o $(BPFTOOL) | $(TRUNNER_OUTPUT) - $$(call msg,GEN-SKEL,$(TRUNNER_BINARY),$$@) - $(Q)$$(BPFTOOL) gen object $$(<:.o=3D.llinked1.o) $$< - $(Q)$$(BPFTOOL) gen object $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinked1.o) - $(Q)$$(BPFTOOL) gen object $$(<:.o=3D.llinked3.o) $$(<:.o=3D.llinked2.o) - $(Q)diff $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinked3.o) - $(Q)$$(BPFTOOL) gen skeleton -L $$(<:.o=3D.llinked3.o) name $$(notdir $$(= <:.bpf.o=3D_lskel)) > $$@ - $(Q)rm -f $$(<:.o=3D.llinked1.o) $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinke= d3.o) + $(Q)$(if $(PERMISSIVE),if [ ! -f $$< ]; then \ + $$(RM) $$@; \ + printf ' %-12s %s\n' 'SKIP-SKEL' '$$(notdir $$@)' 1>&2; \ + exit 0; \ + fi;) \ + printf ' %-12s %s\n' 'GEN-SKEL' '[$(TRUNNER_BINARY)] $$(notdir $$@)' 1>&= 2; \ + $$(BPFTOOL) gen object $$(<:.o=3D.llinked1.o) $$< && \ + $$(BPFTOOL) gen object $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinked1.o) && \ + $$(BPFTOOL) gen object $$(<:.o=3D.llinked3.o) $$(<:.o=3D.llinked2.o) && \ + diff $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinked3.o) && \ + $$(BPFTOOL) gen skeleton -L $$(<:.o=3D.llinked3.o) name $$(notdir $$(<:.b= pf.o=3D_lskel)) > $$@ $(if $(PERMISSIVE),|| { \ + $$(RM) $$@; \ + printf ' %-12s %s\n' 'SKIP-SKEL' '$$(notdir $$@)' 1>&2; \ + }) && \ + rm -f $$(<:.o=3D.llinked1.o) $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinked3.o) =20 $(TRUNNER_BPF_LSKELS_SIGNED): %.lskel.h: %.bpf.o $(BPFTOOL) | $(TRUNNER_OU= TPUT) - $$(call msg,GEN-SKEL,$(TRUNNER_BINARY) (signed),$$@) - $(Q)$$(BPFTOOL) gen object $$(<:.o=3D.llinked1.o) $$< - $(Q)$$(BPFTOOL) gen object $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinked1.o) - $(Q)$$(BPFTOOL) gen object $$(<:.o=3D.llinked3.o) $$(<:.o=3D.llinked2.o) - $(Q)diff $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinked3.o) - $(Q)$$(BPFTOOL) gen skeleton $(LSKEL_SIGN) $$(<:.o=3D.llinked3.o) name $$= (notdir $$(<:.bpf.o=3D_lskel)) > $$@ - $(Q)rm -f $$(<:.o=3D.llinked1.o) $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinke= d3.o) + $(Q)$(if $(PERMISSIVE),if [ ! -f $$< ]; then \ + $$(RM) $$@; \ + printf ' %-12s %s\n' 'SKIP-SKEL' '$$(notdir $$@)' 1>&2; \ + exit 0; \ + fi;) \ + printf ' %-12s %s\n' 'GEN-SKEL' '[$(TRUNNER_BINARY) (signed)] $$(notdir = $$@)' 1>&2; \ + $$(BPFTOOL) gen object $$(<:.o=3D.llinked1.o) $$< && \ + $$(BPFTOOL) gen object $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinked1.o) && \ + $$(BPFTOOL) gen object $$(<:.o=3D.llinked3.o) $$(<:.o=3D.llinked2.o) && \ + diff $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinked3.o) && \ + $$(BPFTOOL) gen skeleton $(LSKEL_SIGN) $$(<:.o=3D.llinked3.o) name $$(not= dir $$(<:.bpf.o=3D_lskel)) > $$@ $(if $(PERMISSIVE),|| { \ + $$(RM) $$@; \ + printf ' %-12s %s\n' 'SKIP-SKEL' '$$(notdir $$@)' 1>&2; \ + }) && \ + rm -f $$(<:.o=3D.llinked1.o) $$(<:.o=3D.llinked2.o) $$(<:.o=3D.llinked3.o) =20 $(LINKED_BPF_OBJS): %: $(TRUNNER_OUTPUT)/% =20 # .SECONDEXPANSION here allows to correctly expand %-deps variables as pre= requisites .SECONDEXPANSION: $(TRUNNER_BPF_SKELS_LINKED): $(TRUNNER_OUTPUT)/%: $$$$(%-deps) $(BPFTOOL) = | $(TRUNNER_OUTPUT) - $$(call msg,LINK-BPF,$(TRUNNER_BINARY),$$(@:.skel.h=3D.bpf.o)) - $(Q)$$(BPFTOOL) gen object $$(@:.skel.h=3D.linked1.o) $$(addprefix $(TRUN= NER_OUTPUT)/,$$($$(@F)-deps)) - $(Q)$$(BPFTOOL) gen object $$(@:.skel.h=3D.linked2.o) $$(@:.skel.h=3D.lin= ked1.o) - $(Q)$$(BPFTOOL) gen object $$(@:.skel.h=3D.linked3.o) $$(@:.skel.h=3D.lin= ked2.o) - $(Q)diff $$(@:.skel.h=3D.linked2.o) $$(@:.skel.h=3D.linked3.o) - $$(call msg,GEN-SKEL,$(TRUNNER_BINARY),$$@) - $(Q)$$(BPFTOOL) gen skeleton $$(@:.skel.h=3D.linked3.o) name $$(notdir $$= (@:.skel.h=3D)) > $$@ - $(Q)$$(BPFTOOL) gen subskeleton $$(@:.skel.h=3D.linked3.o) name $$(notdir= $$(@:.skel.h=3D)) > $$(@:.skel.h=3D.subskel.h) - $(Q)rm -f $$(@:.skel.h=3D.linked1.o) $$(@:.skel.h=3D.linked2.o) $$(@:.ske= l.h=3D.linked3.o) + $(Q)$(if $(PERMISSIVE),for f in $$(addprefix $(TRUNNER_OUTPUT)/,$$($$(@F)= -deps)); do \ + if [ ! -f $$$$f ]; then \ + $$(RM) $$@ $$(@:.skel.h=3D.subskel.h); \ + printf ' %-12s %s\n' 'SKIP-SKEL' '$$(notdir $$@)' 1>&2; \ + exit 0; \ + fi; \ + done;) \ + printf ' %-12s %s\n' 'LINK-BPF' '[$(TRUNNER_BINARY)] $$(notdir $$(@:.ske= l.h=3D.bpf.o))' 1>&2; \ + $$(BPFTOOL) gen object $$(@:.skel.h=3D.linked1.o) $$(addprefix $(TRUNNER_= OUTPUT)/,$$($$(@F)-deps)) && \ + $$(BPFTOOL) gen object $$(@:.skel.h=3D.linked2.o) $$(@:.skel.h=3D.linked1= .o) && \ + $$(BPFTOOL) gen object $$(@:.skel.h=3D.linked3.o) $$(@:.skel.h=3D.linked2= .o) && \ + diff $$(@:.skel.h=3D.linked2.o) $$(@:.skel.h=3D.linked3.o) && \ + printf ' %-12s %s\n' 'GEN-SKEL' '[$(TRUNNER_BINARY)] $$(notdir $$@)' 1>&= 2 && \ + $$(BPFTOOL) gen skeleton $$(@:.skel.h=3D.linked3.o) name $$(notdir $$(@:.= skel.h=3D)) > $$@ && \ + $$(BPFTOOL) gen subskeleton $$(@:.skel.h=3D.linked3.o) name $$(notdir $$(= @:.skel.h=3D)) > $$(@:.skel.h=3D.subskel.h) $(if $(PERMISSIVE),|| { \ + $$(RM) $$@ $$(@:.skel.h=3D.subskel.h); \ + printf ' %-12s %s\n' 'SKIP-SKEL' '$$(notdir $$@)' 1>&2; \ + }) && \ + rm -f $$(@:.skel.h=3D.linked1.o) $$(@:.skel.h=3D.linked2.o) $$(@:.skel.h= =3D.linked3.o) =20 # When the compiler generates a %.d file, only skel basenames (not # full paths) are specified as prerequisites for corresponding %.o --=20 2.54.0 From nobody Sat Jun 20 14:14:06 2026 Received: from mail-lf1-f43.google.com (mail-lf1-f43.google.com [209.85.167.43]) (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 0364146AEF5 for ; Thu, 30 Apr 2026 16:02:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564951; cv=none; b=FoIyjuHgF/MsOnuq/DmgSuJ19R74r498jfSSpqIQ5P3ksBIAi7QXGnwPG10lKVISG8Kxd8rwUJjobUg9ZvaXCCbnkbFrZPM8d7CcL+IT1DHRRVToSsGN2vS2EcFBGCk8Lfd88gV8NVzjiXM5ejYkbZ5/kWyxAeymWC0WC1omas8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564951; c=relaxed/simple; bh=pbpwT1aTnlvs/k4VWEJw+b4cingvftFSwGWkwuBMoWA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=d/6EnOdlK0AnHTNu0wc9DtHushyqzl2tKeJ+/MNr2Ysx+0zu8Xv9MrEnlxHBZMysYfUOI5Iz0cXhuWpZ55aI2J3bFvu5rr7+ROqk1pjArNV2FDgh11DEillOFi/pLGUgPEuImXHB1L+mBw7HReMpxfXCBIVc7RtvcLykrVxtOkE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=RR3zcf3a; arc=none smtp.client-ip=209.85.167.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="RR3zcf3a" Received: by mail-lf1-f43.google.com with SMTP id 2adb3069b0e04-5a10d130b37so1141282e87.0 for ; Thu, 30 Apr 2026 09:02:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777564947; x=1778169747; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=FfRfeM2Ktoz2YBd+nAbVoRoGagqa4SBjA60nTAl7vkM=; b=RR3zcf3aM5vxaG5PFcHyI+pSVhLR2LWBIromtyrVDzZVDTgPwS4yATZCV4LhdqaKl3 eeIWzsL0Hzz9krHxFBGCiZj4C0OmIsj4iUAdFln2rEPo68erqQvOgjZr2EwMbSPUoP+c sCWM8QCETTSl2WeBiQlVFxBgszjyagHl5FfOx7biK5rUYoRdFZ3IHa4wBnxlgntOPHKE puPPHePF+aokLfMzRBCtHhWg5eEP3Fq2hA92Ad/W7WP3HThQ/6E7kS81xbYkK9OZrauY hHqb2x2nMTW8+PvnXAuw0U5Y3IzWIIYUcYYHTyJ2BWpxGToTgEQA5yyCUkvqTEXkUtP0 NfyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777564947; x=1778169747; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=FfRfeM2Ktoz2YBd+nAbVoRoGagqa4SBjA60nTAl7vkM=; b=OVLDhlkd8vU04ofeDnLKpU3+qx9aQhjArvTMNE0QQjgwPcosfbfzFqDeZm3102BGSr 9zUdVympfsoDPDbsjBoaf7huhzDJqVVZ2UFHcmmsSMsib/99YIclaQzYkZgZQfjS0Hwn uyZT25z6C4xXbYDHhO7tw6lqYap4FfJDng3eaeU/w18h/GcLlj79tt4Jcx8b+3iuB1ED i4uqjViXDRhfVFi2BjHdG/f9mg0ffZRcmXmCsx31QoxMN/iCybDnwgfZLyxJjjCS7Fjl /LSN5BpxDSTlmuxx1jW1oKlPjfMOvDpqlYeYrwzWHIW9NJZtcWvxya1NxgDnwmUW2R/9 Uqag== X-Forwarded-Encrypted: i=1; AFNElJ+93z6q2Z9yBiOoG7xAKmqTAPjVnJ4UTQtOST3LCQCIR90utPiGekxd6RQ1KaDZaGMjI9lAwG9waKFOV9c=@vger.kernel.org X-Gm-Message-State: AOJu0YzBP4w8mvasB5Z3yIDhpUAPz2lB42S1Oko9vjtUi1bG/bgS8i7J OOP4YnTk+VhIGufm4fHMfGXhKUlTeLiKbR4BGlctXB3erq7zN7P7i4+YKlC0LjFQmSg= X-Gm-Gg: AeBDieu8WCUjdS1a8XnOgSuFYNMhcgxtlL6aoVGe1gugzQTNVt/czsvKOeAubCVif65 BeOWw9hbQ0b8NcYBf7kyuuGRdEbEtiVpcBu74tsk+HnEmBifbs5NGsL9raSUQP+ATMBXLX6PuwK 7Ko8S4Psv9fLnlvF7oduiW3ypxW8AL+NeY/laC4W48sIklVsj//etHS++UuemSKIKZfloEq0g5q +sdxu+pwifM9ET+n6bGUvEDNVR3+Tq6ZLL0QtTSwBK2RsSv1nLfWibxvZPusi6DeRZNdlabgyBa nsLeA0jXcZ1cleA9bJ+WI5kSWowo9lAxAnOr3NeK7FwisItRqbQai6I4Uo1iLV6hT1iA5nMKNz8 XEjEx45jSadp2AWj3w75Y2gfINXBJ45U7xtu9LIk53g7X61HciOre1FTwLe15laIgD9J2KaR9fA q4GvgQ032YrBiAGYFgxwyFJuRZ X-Received: by 2002:a05:6512:3b97:b0:5a7:4a61:251b with SMTP id 2adb3069b0e04-5a85274574dmr966110e87.23.1777564947049; Thu, 30 Apr 2026 09:02:27 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7bd5500decasm10147037b3.26.2026.04.30.09.02.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 09:02:26 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 13:02:05 -0300 Subject: [PATCH bpf-next v11 04/11] selftests/bpf: Avoid rebuilds when running emit_tests Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260430-selftests-bpf_misconfig-v11-4-e11f7a8c4fdc@suse.com> References: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1777564926; l=1555; i=rbm@suse.com; h=from:subject:message-id; bh=pbpwT1aTnlvs/k4VWEJw+b4cingvftFSwGWkwuBMoWA=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QJCdl3O6dJs3KBM3TNjFWh/ti1NuSibuphC5wNsVk2bNEB1ItoSCp53bCr+TLScjI4dk9j82MgB V3vt+5ImILg0= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g emit_tests is used while installing selftests to generate the kselftest list. Pulling in .d files for this goal can trigger BPF rebuild rules and mix build output into list generation. Skip dependency file inclusion for emit_tests, like clean goals, so list generation stays side-effect free. Also add emit_tests to NON_CHECK_FEAT_TARGETS so that feature detection is skipped; without this, Makefile.feature's $(info) output leaks into stdout and corrupts the test list captured by the top-level selftests Makefile. Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- tools/testing/selftests/bpf/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests= /bpf/Makefile index b104c687dcf0..9a4d8bea0c18 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -170,7 +170,7 @@ endef =20 include ../lib.mk =20 -NON_CHECK_FEAT_TARGETS :=3D clean docs-clean +NON_CHECK_FEAT_TARGETS :=3D clean docs-clean emit_tests CHECK_FEAT :=3D $(filter-out $(NON_CHECK_FEAT_TARGETS),$(or $(MAKECMDGOALS= ), "none")) ifneq ($(CHECK_FEAT),) FEATURE_USER :=3D .selftests @@ -732,7 +732,7 @@ $(TRUNNER_TEST_OBJS:.o=3D.d): $(TRUNNER_OUTPUT)/%.test.= d: \ $(TRUNNER_BPF_SKELS_LINKED) \ $$(BPFOBJ) | $(TRUNNER_OUTPUT) =20 -ifeq ($(filter clean docs-clean,$(MAKECMDGOALS)),) +ifeq ($(filter clean docs-clean emit_tests,$(MAKECMDGOALS)),) include $(wildcard $(TRUNNER_TEST_OBJS:.o=3D.d)) endif =20 --=20 2.54.0 From nobody Sat Jun 20 14:14:06 2026 Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) (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 052B4466B71 for ; Thu, 30 Apr 2026 16:02:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564953; cv=none; b=SmUw89cVZOHMdJ5c03miatMIHgLnGsmbnX+fouF58dm8vgCKA+kohMF+fu8K3W0X0MMDBU5CtTP1hU12Ttu0BHayvPDulrY6/Jljace4eueH0+RF4kqSeoxct+zYYcePaWSS/l+H23pYN3u5S7Axkeaj6eqwc8qWw6SRxfVcKuw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564953; c=relaxed/simple; bh=aqXG984YlUxMtsZ+i7vquyVJaGX8IceA6DEnTDh+TX4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=V3dsd+xcOIRaPori+odSvCSi+h4PGrxEoeqsLJCYBl5TE8aFrFArT9yLoygpwnUKp0WETtSGE2boIRl9/fZ8G1k2rTFyXFomV1i8UBHyN9ic1cWfu+fz+64OUJWOjelXyn3e9uYCOZJOiszT5x32er7HcH7D7GvZpXbqBtqqeTA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=A6SQ7ubN; arc=none smtp.client-ip=209.85.218.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="A6SQ7ubN" Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-ba922426c5cso194845266b.3 for ; Thu, 30 Apr 2026 09:02:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777564950; x=1778169750; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ysP9AGtPxCAbfR+Tj7mfuITrZ+N0ZILV2wyZ0Jzr9sk=; b=A6SQ7ubNlFgx1Qt2pasAM9ETQUxEClvRnIAR31jUz76FYrBAsKVpPZEhMntY4aDIB8 Yw5hBH3QHvuPHt6Dvb9jZpqkONs9fbhrxApQKfUvN/pi1Lqq51JBXZ5ULvMmddcAGKB8 IIzd4NGvW86b1WvdW+P1gmq9MsmTx0zkFLTUJyWxW4+mq/QtXQfNl7coeqv5hFg7nwUn C+XwHKLLZVOWv3XJW92lmfqP41zTs2LPmPQBZIzMJG3l61Zm4e0JzW05j2R0MmFiPpRp g/hNiJtekU2NSw5TnVTjg4OKUYfsBZQQZFGj4MfCpy82NMDPJVHpBTuktONIIJXmyhe9 MEbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777564950; x=1778169750; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ysP9AGtPxCAbfR+Tj7mfuITrZ+N0ZILV2wyZ0Jzr9sk=; b=Z2iaFe4Ue4dbYqVTw/YL6GBYVIr/Ol4svGOwVb/vMOKo4pezXBdAHUsaZF36YoUF6v TXs+oUiQaMnuKvLHa54PTtAzTI2L8hyQO4lukx9yoGXOiP8dSMvPZybwAXa2ro8z4mDa U0aQTmenTvDqTPwF2KuQcpk66dGYgS+vrrk2wyRA3ARj/5rMC+fS3KnYyvpOINmehhQS qVNLHHbLJZnKh5dnyGQONZtPdkrpEfTncnAlSUsmtmhgYP5k1A7gdyzhFz/lr0dWvALM NKCHELJ34F+UdZE2giv7yt5bn9Wcjmv0uYOLHFog+0BsrvpziCt9Yw9WlKvGth3yfxSQ ADMg== X-Forwarded-Encrypted: i=1; AFNElJ+fiSkLyZWaJBtzIzAObcaSF/prfD2ymEb4JhKvMU/EsqYve6/198Tdv9KyXbNIIDE9i6pxy4FQlfNn1/s=@vger.kernel.org X-Gm-Message-State: AOJu0YzoqNTi3URTsSDGzlqnyoPSa9Ym/2MJJFS0S5HJVcMSf3V5F5Es r8XF7YFJIs0nzeDBfTthBET/YUL/A5KYjI7mqQ4PQFPX7IxafG82uHRNpPDiyUCPyevxM3FcPy6 PZKxHasg= X-Gm-Gg: AeBDieth4DKn5JStbLITJfGYc0udCXz8wwhjZm6CBPr7dWwcJSl02v1Tx+BTsBrGhTB qtyhi4BnFWT5Jr2WylBh8QC9hw05xptfG/wcbR73tPkwrTMNg0YGEmlC/DVDD5lTvOAns1J2f0O bS2epyrk8EyQO212pqxUBFr6pvHnhJ/CIGSzjUZ9R26RyYRUuAYyKRVdpq4YecBzy0yxmEowqFC aKaPJv9tLxMAwYV+KmzA16NXeFu1/wobUPb1hMCY5cf8KfcmtwGC0AHsfiRPKQomz7K8QsHawDF /0WHrFQVVjDsNZho1kN3eH78virF7EU7GevyEJBEt8GddEiHh/Rh0FA+dOGycJ5b/DRjwxn5+4H rWgW2x2goIX9NX27PG+GPRECvzE2zNYxOXIFVRm9n4mPt8YqfDhVg3+SEfloCtugOkPXAGQw24W geiIcczHYKlvKepNEE8zs19i/8 X-Received: by 2002:a17:907:e152:b0:ba7:a94d:af83 with SMTP id a640c23a62f3a-bbac6ac5c01mr160316966b.31.1777564950276; Thu, 30 Apr 2026 09:02:30 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7bd54eeb248sm10160867b3.6.2026.04.30.09.02.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 09:02:29 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 13:02:06 -0300 Subject: [PATCH bpf-next v11 05/11] selftests/bpf: Make skeleton headers order-only prerequisites of .test.d Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260430-selftests-bpf_misconfig-v11-5-e11f7a8c4fdc@suse.com> References: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1777564926; l=2402; i=rbm@suse.com; h=from:subject:message-id; bh=aqXG984YlUxMtsZ+i7vquyVJaGX8IceA6DEnTDh+TX4=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QCo6mLZWKSZcDdzagdfeT46AKZ9kv7Fqh2BX7R6mYzSammKbTE4ly9UfPlsCuDiEdbFVprW9rfG xim9o8BOE/gs= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g The .test.d dependency files are generated by the C preprocessor and list the headers each test file actually #includes. Skeleton headers appear in those generated lists, so the .test.o -> .skel.h dependency is already tracked by the .d file content. Making skeletons order-only prerequisites of .test.d means that a missing or skipped skeleton does not prevent .test.d generation, and regenerating a skeleton does not force .test.d to be recreated. This avoids unnecessary recompilation and, more importantly, avoids build errors when a skeleton was intentionally skipped due to a BPF compilation failure. $$(BPFOBJ) is intentionally kept as a normal prerequisite: a libbpf rebuild legitimately invalidates .test.d, since libbpf header changes can affect the headers .test.o sees. Only the skeleton headers are moved to order-only. Note that adding a new BPF skeleton via a modified existing local header still works correctly: GNU make builds order-only prerequisites that do not exist (the order-only qualifier only suppresses timestamp-driven rebuilds, not existence-driven builds), so a brand-new .skel.h listed in TRUNNER_BPF_SKELS is generated even when .test.d is otherwise up to date. The modified local header invalidates .test.o through the previously included .d content, forcing a recompile that regenerates .test.d with the new .skel.h dependency captured by gcc -MMD. Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- tools/testing/selftests/bpf/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests= /bpf/Makefile index 9a4d8bea0c18..608e6dff0392 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -726,11 +726,11 @@ $(TRUNNER_TEST_OBJS): $(TRUNNER_OUTPUT)/%.test.o: \ $(TRUNNER_TEST_OBJS:.o=3D.d): $(TRUNNER_OUTPUT)/%.test.d: \ $(TRUNNER_TESTS_DIR)/%.c \ $(TRUNNER_EXTRA_HDRS) \ + $$(BPFOBJ) | $(TRUNNER_OUTPUT) \ $(TRUNNER_BPF_SKELS) \ $(TRUNNER_BPF_LSKELS) \ $(TRUNNER_BPF_LSKELS_SIGNED) \ - $(TRUNNER_BPF_SKELS_LINKED) \ - $$(BPFOBJ) | $(TRUNNER_OUTPUT) + $(TRUNNER_BPF_SKELS_LINKED) =20 ifeq ($(filter clean docs-clean emit_tests,$(MAKECMDGOALS)),) include $(wildcard $(TRUNNER_TEST_OBJS:.o=3D.d)) --=20 2.54.0 From nobody Sat Jun 20 14:14:06 2026 Received: from mail-lf1-f49.google.com (mail-lf1-f49.google.com [209.85.167.49]) (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 47E60472766 for ; Thu, 30 Apr 2026 16:02:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564958; cv=none; b=nGZ6AVtHC/1uAM+OtiavwknG0l3kXZQP9wAdkQV2lp2UmVKmHgwtgE9DLH+Ae3SiPGOQXzQKJA0Wg3B9nEYxcQP+bWpSn3Jw3UjjIgdNDEYkc+opWO1o0a9Vase6LA4VDLtvvFN8exLEWnBJ4SKHba6qq1+ZHL9m7cwfZ6V2CiE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564958; c=relaxed/simple; bh=sCL3BBNlvDSegGw1RYfwGLaOwuamABwTCX8jZIraTaM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jBhXKj/GYv5teQU09k+7okK3gLdBYDGbHiqO3zBOYtn+dQlQvDJScaKhplaoCewnxd9M1MgpLgQUK55gA0wK5wV5LrW8Kde6jstdgKF2Bm/K2p6L/z30dwNuY2OMHktEHePIe6k0Snb3oGd+4CkE98uNYT+ghLGXn8XbI4as1n4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=IvqtWk5A; arc=none smtp.client-ip=209.85.167.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="IvqtWk5A" Received: by mail-lf1-f49.google.com with SMTP id 2adb3069b0e04-5a2c500750dso1938021e87.1 for ; Thu, 30 Apr 2026 09:02:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777564954; x=1778169754; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ixuEYraq8V8r2ObYxyMzyXo1gSQVYrBbLSiWlZ9LJqs=; b=IvqtWk5A/GQbMWUXMvPhA3PFM5o+B1+DxvvaH3zdo3odQovpsIL+VvTfhnrPfcAK0h fTekRuxqGxQkb34gsM9Hf1F7Wp6SAlELhEajOyxvtsZ7AFDF9gmgA6vOkXwwyBGmycfd tmAbk4MWXwz2I3A5XCSria1y552fQ1weQlcwWIbpuGZsNtwoNKHnxRoUQr4b56v3mDj3 CuhEaUU/q5qCO5NDO3xBbKxTMFGXyN/Qui94wx3k4M/H9Kq8yRophXDnTFcuOAWFtZ/C Hu05FUrH4UG+jyg2EWMRV6QmwqYu+oO2JYu8oTratYzNiJ6XPj5FP/TsWShsCiAng8IJ gyzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777564954; x=1778169754; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ixuEYraq8V8r2ObYxyMzyXo1gSQVYrBbLSiWlZ9LJqs=; b=OmdqUWiTmcTbfbpi6GTekXSZi2W+K9IdhOawuS82o/lGGyb3TQ/j2+L0uxqq3m9rhy XR3wLZ4fnPjtnsJES+nMIOnp6rEodnZfUO9qfUmMtMqxXIc6ZRxSQCs+zHLbuDZJsnVU EeTPicYDf0Dfja/Tz16NuthXy35d6P93rs3f0cCVlaYz1UUZkkTYwN2YQuz3aSsK6b5T LmWYgi5JJaS3+NnFGt4sx9xiAw1iiilEJgx+B4Ha7IUer6pMy3HIZ1nqIvv3yaAegwYZ 55JxLvrLqr98Qv/q1Sa+w7kEk6GYjpNWDisd8byuf8ItebnXXXciaQkIyoC/+lKo/6az Omnw== X-Forwarded-Encrypted: i=1; AFNElJ8niJsmj+JiJ4bRgxxYpLdHpasCl9kXPa75TBH9CZN/8zOqZg0NkRAXljnrAjMxHpKngHKPWaKzB65JP04=@vger.kernel.org X-Gm-Message-State: AOJu0Yx4EnOESi1U/rAJEq21IL7dK0R60F3l3RXyuhFaDykKwK+qxETU 15gYaZsKaiyYRatrZQySYBeR7I8U4GthlpJsjTQrMqyhNUZrFOFYFIJMeCXyQKdIl5U= X-Gm-Gg: AeBDieusex9YgwT4sf6IE37Wb374ZtE1lc7ssBTKTebYnFc59GE4s2PjE+b8g0CdCVw emzMvWKvph6lV5gtze9liEBvR2bmrcvRl5uzE0/0kcHNyZXNBeqLcJow2ldHRliUr/DOPTTAV6b SUZHYzRnCvybMClLpZHYHbhDxvd1iHrCskuZMKiLeDP29BM5gV31Vv3iTiDYgJfV322kK4ViaIJ 7LtCWMppi11DEJgGsRNpwUCdjyDex6UbwgyoYksRaPzwnla2ZmGs+0v2MUHVqdY1gCXVVkxnPwC o0Dea0vwiQYNacSxkwhe2VA0G6EEZhYm7EjOQkK4NEE+0yUFf/y2s/71wJNKYOWmSul25/568zw rV94jRCbPNZHMFWySA7OWNLgrcuHdbXD7WrGaPbWmvA5SOQV2LOQGEU6/kqB2OD9b4uwXrPM4Ox hbHDoLCD5i6uAzgWLDX4N4Ah5r X-Received: by 2002:a05:6512:10d3:b0:5a2:b487:b945 with SMTP id 2adb3069b0e04-5a8522c316bmr1399814e87.18.1777564954314; Thu, 30 Apr 2026 09:02:34 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7bd54b018adsm10643367b3.8.2026.04.30.09.02.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 09:02:33 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 13:02:07 -0300 Subject: [PATCH bpf-next v11 06/11] selftests/bpf: Tolerate test file compilation failures Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260430-selftests-bpf_misconfig-v11-6-e11f7a8c4fdc@suse.com> References: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1777564926; l=4111; i=rbm@suse.com; h=from:subject:message-id; bh=sCL3BBNlvDSegGw1RYfwGLaOwuamABwTCX8jZIraTaM=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QBLv9nDN2lTqYKeZiw2HLgL+bWLZC9uuMjxtiu1Qcs08vuV2yeTKDzwBfamXV6aKfs4sGZVihi9 QGi26znR71QE= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g Individual test files may fail to compile when headers or kernel features required by that test are absent. Currently this aborts the entire build. Make the per-test compilation non-fatal: remove the output object on failure and print a SKIP-TEST marker to stderr. Guard the BTFIDS post-processing step so it is skipped when the object file is absent. The linker step will later ignore absent objects, allowing the remaining tests to build and run. Group cd and CC in a sub-shell so a cd failure cannot leak into the error-handling branch and operate in the original working directory; use $@ (absolute path) for $(RM) so it cannot match an unrelated file there. Replace the $(call msg,...) in the BTFIDS block with a plain printf (the msg macro expands to @printf, which is a make-recipe construct and is invalid inside a shell if-then-fi body) and gate the printf on $(filter 1,$(V)) so verbose mode (V=3D1) does not double-print the line that the recipe shell already echoes; non-verbose modes (V unset, V=3D0, V=3D2, ...) still print the BTFIDS marker, matching the convention of the shared msg macro. Restrict tolerance to test_progs and its flavors via an inlined $(if $(filter test_progs%,$1),$(if $(PERMISSIVE),...)) check: runners with strong cross-object references (e.g. test_maps) would link-fail with a partial object set, so they keep strict semantics even when BPF_STRICT_BUILD=3D0. The check is inlined rather than stored in a helper variable so $1 is substituted at $(call) time and the per-runner result is baked into each recipe. Note on bisectability: this change is gated entirely behind PERMISSIVE for test_progs%, so default builds (BPF_STRICT_BUILD!=3D0) compile and run identically at every commit in the series. Bisecting in PERMISSIVE mode at this commit still requires the next two patches ("selftests/bpf: Skip tests whose objects were not built" and "selftests/bpf: Allow test_progs to link with a partial object set") to avoid the linker rejecting missing objects and the runtime aborting on NULL function pointers. Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- tools/testing/selftests/bpf/Makefile | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests= /bpf/Makefile index 608e6dff0392..df173f9800f7 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -588,6 +588,12 @@ endef # $2 - test runner extra "flavor" (e.g., no_alu32, cpuv4, bpf_gcc, etc) define DEFINE_TEST_RUNNER_RULES =20 +# Permissive build behaviour (skip-on-failure compile, partial-link) only +# applies to test_progs and its flavors; runners that use strong cross-obj= ect +# references (e.g. test_maps) keep strict semantics even when permissive. +# The check is inlined per-runner so $1 is substituted at $(call) time and +# the result is baked into each rule's recipe. + ifeq ($($(TRUNNER_OUTPUT)-dir),) $(TRUNNER_OUTPUT)-dir :=3D y $(TRUNNER_OUTPUT): @@ -717,11 +723,14 @@ $(TRUNNER_TEST_OBJS): $(TRUNNER_OUTPUT)/%.test.o: \ $(TRUNNER_TESTS_DIR)/%.c \ | $(TRUNNER_OUTPUT)/%.test.d $$(call msg,TEST-OBJ,$(TRUNNER_BINARY),$$@) - $(Q)cd $$(@D) && $$(CC) -I. $$(CFLAGS) -MMD -MT $$@ -c $(CURDIR)/$$< $$(L= DLIBS) -o $$(@F) + $(Q)(cd $$(@D) && $$(CC) -I. $$(CFLAGS) -MMD -MT $$@ -c $(CURDIR)/$$< $$(= LDLIBS) -o $$(@F)) $(if $(filter test_progs%,$1),$(if $(PERMISSIVE),|| \ + ($(RM) $$@; printf ' %-12s %s\n' 'SKIP-TEST' '$$(notdir $$@)' 1>&2))) $$(if $$(TEST_NEEDS_BTFIDS), \ - $$(call msg,BTFIDS,$(TRUNNER_BINARY),$$@) \ + $(Q)if [ -f $$@ ]; then \ + $(if $(filter 1,$(V)),true,printf ' %-8s%s %s\n' "BTFIDS" " [$(TRUNNER_= BINARY)]" "$$(notdir $$@)"); \ $(RESOLVE_BTFIDS) --btf $(TRUNNER_OUTPUT)/btf_data.bpf.o $$@; \ - $(RESOLVE_BTFIDS) --patch_btfids $$@.BTF_ids $$@) + $(RESOLVE_BTFIDS) --patch_btfids $$@.BTF_ids $$@; \ + fi) =20 $(TRUNNER_TEST_OBJS:.o=3D.d): $(TRUNNER_OUTPUT)/%.test.d: \ $(TRUNNER_TESTS_DIR)/%.c \ --=20 2.54.0 From nobody Sat Jun 20 14:14:06 2026 Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) (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 F0BC746AF08 for ; Thu, 30 Apr 2026 16:02:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564962; cv=none; b=olnRlzIqkyIX0dZ0cvL7NgQAYPaZ0w37H9mmBDtMO4gzcbRjZSo5CsJFiWXs+07mQmYMZywEp0CHdr+5okyW6zxCpITkRxKQuEvEHzFRHyEL1I3sM8QX2JAquSWm8ihKo0Rvm0WuePX5CSyiuJsyKUC2iiTWgv7P/EaK82IMt8k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564962; c=relaxed/simple; bh=M6OJfT3qSdP4lnrHz8anqee8kUQRnD0Hidbc1/0+8Oc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JVET8Dn5jsbC99jjMylnzSnOZ3/upIn4jtdxxQgWcel4TDjmKdIIKrkF2IzLBexx2XpYeNmNT+VPLh0cgbFnaagvwbd7H2/OEsYNkzmIqwZh/mzQ3N5TGAqkYfaDew+LPAhkUbn+K5TrXYSoGcwuOnYpNQfWeQKg3YTkwcM2b5c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=RSsqUG7k; arc=none smtp.client-ip=209.85.167.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="RSsqUG7k" Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-5a525aedb24so1281307e87.2 for ; Thu, 30 Apr 2026 09:02:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777564958; x=1778169758; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=gvXdowVtyuI/sQdPSdYXchM5M1PBQ4p+rahyvFeZ5AI=; b=RSsqUG7k7DDurLZXIQdSj4pL8BVMOGaRjGKW75jzOAtv/cJ6ElTGVM5IKIV7Zj+Dg4 WaZ1CP1SjjA1syHxufbAB2zev8zYRrIkdatpo0d0cQziDqf5vXX1omLH5c6q3p7Rvq0r s9CVzBHGkhEsLvK88oqNMDJhprNmwdYyHqk/t9QrJ1kaS+cHcAFeIlh2OR8JCkQ1jP9Y s2NTMcg9IZJI2NJ4z3h8MFYwJsHRnT2ZaTIQyP9PjiKoPRGTYL0wAY9R2WdDAI9sGL66 ialwfyFOEXfhTSXXTpIJ3qcOagmq55BbxLKvEsjE1D/QgnqfPqpnJwV2hVaR7Aw/+0W0 t0pw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777564958; x=1778169758; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=gvXdowVtyuI/sQdPSdYXchM5M1PBQ4p+rahyvFeZ5AI=; b=S7nlUBR5eG+SGTtI8oHSxF1nHdOnwmCeOp38tYhuHeSyzYOHWxJfPH+ezo6rATninK 4FNwezTzhlevRi/cD0aqo1+d6rPX0zjJQMCUl27a2or7vK8SEGMzzuTKJID1Dzy/EUJB E4nb2DryFMmV1SHC1vqhz9/T5VrhIrl2nHnXALU6hgkZC2ZW4xxoscAs+bIK1HGQD9Dz xg+/JZq4rZLQ77tb+GxSK4F+Fywc00A3WYYxr/p/2AcdXiwDEapVgSZvTOUPbzSnyxKX lknF26jyS6KHr0cKVb9qPZAVdgrd1mk/8r1Y6GF4Wn3tavxx5zc1gS4zcWIwpQWWYOe9 ZJdA== X-Forwarded-Encrypted: i=1; AFNElJ+MvXHITKX02dv5qRTgdNWoaSIm+q+Ql31Ywzejfvxy2sdF6ZguxEcSCfrqD2NZmrOCzPUamb5ZZh7nDX0=@vger.kernel.org X-Gm-Message-State: AOJu0Ywu/uR+E9T9SFkHAdpCko2XMwT4rhlQ3zi1nrFVfj0T1ZtXL61b GeTv/z9pzH5eaR9CA1cZUrdXrrBL9auPqBWx6htXk4+Rys1++AsVpkH47PIDEyeybJs= X-Gm-Gg: AeBDiesCge4H+hKIAttwsiVIlC/I47ShjvbXCXsLyGEU59XK4qcVN1X+STIIk5GyEyM k0gbeeDCgajNW8n64ExpbEAfwk0fVhG6Ijd0OpCfL8e7PpLdExfZOmHLHDj0lc7DPhkQlMhCOrj HMOUjeZwFOIa2PTvmKciSeQIzgpU2TkPKWqOuC2BeNr1Z+ex7nmKDMBioGiXdj6VtqiTUx2iTAv yeU9ZSJrr0o0SXdkkhfkdrukNU8hY03uygFdOCJSSeEtARgb7YhIBP+Vn6E1D30CBTMYAKq/n7s yMkpsN7+dmZXavDJ8nD/j5QHW2ljBwQCXmulp4wX3NCLf84BkpS1U29Ljlm+JGfYzcxwUk/8Qs4 WAFH25nDXYh10rf2THyT6hRx5Tw7txa38wD3jQxGonc/DXCUxzlXwlwNIy2qobZ8PyiB95Y8kis 7QmhX3wSTtWqeT/n6ZiIaLmZfe X-Received: by 2002:ac2:4944:0:b0:5a4:10b5:624e with SMTP id 2adb3069b0e04-5a8522d5a3fmr979564e87.24.1777564958059; Thu, 30 Apr 2026 09:02:38 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 956f58d0204a3-65bff50386dsm2804916d50.8.2026.04.30.09.02.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 09:02:36 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 13:02:08 -0300 Subject: [PATCH bpf-next v11 07/11] selftests/bpf: Skip tests whose objects were not built Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260430-selftests-bpf_misconfig-v11-7-e11f7a8c4fdc@suse.com> References: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1777564926; l=5462; i=rbm@suse.com; h=from:subject:message-id; bh=M6OJfT3qSdP4lnrHz8anqee8kUQRnD0Hidbc1/0+8Oc=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QJX8IYTTtAYURZkOuGNWx8NLc77j4itn8M4PvRoLfQpW0hqd5Do8v/NGZr/33JxgmELv88ZXXFq WA50O2q4viwQ= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g When both run_test and run_serial_test are NULL (because the corresponding .test.o was not compiled), mark the test as not built instead of fatally aborting. Report these tests as "SKIP (not built)" in per-test output and include them in the skip count so they remain visible in CI results and JSON output. The summary line shows the not-built count when nonzero: Summary: 50/55 PASSED, 5 SKIPPED (3 not built), 0 FAILED Tests filtered out by -t/-n remain invisible as before; only genuinely unbuilt tests are surfaced. Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- tools/testing/selftests/bpf/test_progs.c | 53 +++++++++++++++++++++++++++-= ---- tools/testing/selftests/bpf/test_progs.h | 1 + 2 files changed, 46 insertions(+), 8 deletions(-) diff --git a/tools/testing/selftests/bpf/test_progs.c b/tools/testing/selft= ests/bpf/test_progs.c index cc14b13e23fe..7ba82974ee78 100644 --- a/tools/testing/selftests/bpf/test_progs.c +++ b/tools/testing/selftests/bpf/test_progs.c @@ -165,6 +165,8 @@ struct prog_test_def { void (*run_test)(void); void (*run_serial_test)(void); bool should_run; + bool not_built; + bool selected; bool need_cgroup_cleanup; bool should_tmon; }; @@ -372,6 +374,8 @@ static void print_test_result(const struct prog_test_de= f *test, const struct tes fprintf(env.stdout_saved, "#%-*d %s:", TEST_NUM_WIDTH, test->test_num, te= st->test_name); if (test_state->error_cnt) fprintf(env.stdout_saved, "FAIL"); + else if (test->not_built) + fprintf(env.stdout_saved, "SKIP (not built)"); else if (!skipped_cnt) fprintf(env.stdout_saved, "OK"); else if (skipped_cnt =3D=3D subtests_cnt || !subtests_cnt) @@ -1641,6 +1645,7 @@ static void calculate_summary_and_print_errors(struct= test_env *env) json_writer_t *w =3D NULL; =20 for (i =3D 0; i < prog_test_cnt; i++) { + struct prog_test_def *test =3D &prog_test_defs[i]; struct test_state *state =3D &test_states[i]; =20 if (!state->tested) @@ -1651,7 +1656,7 @@ static void calculate_summary_and_print_errors(struct= test_env *env) =20 if (state->error_cnt) fail_cnt++; - else + else if (!test->not_built) succ_cnt++; } =20 @@ -1700,8 +1705,13 @@ static void calculate_summary_and_print_errors(struc= t test_env *env) if (env->json) fclose(env->json); =20 - printf("Summary: %d/%d PASSED, %d SKIPPED, %d FAILED\n", - succ_cnt, sub_succ_cnt, skip_cnt, fail_cnt); + if (env->not_built_cnt) + printf("Summary: %d/%d PASSED, %d SKIPPED (%d not built), %d FAILED\n", + succ_cnt, sub_succ_cnt, skip_cnt, env->not_built_cnt, + fail_cnt); + else + printf("Summary: %d/%d PASSED, %d SKIPPED, %d FAILED\n", + succ_cnt, sub_succ_cnt, skip_cnt, fail_cnt); =20 env->succ_cnt =3D succ_cnt; env->sub_succ_cnt =3D sub_succ_cnt; @@ -1772,6 +1782,19 @@ static void server_main(void) run_one_test(i); } =20 + /* mark not-built tests as skipped */ + for (int i =3D 0; i < prog_test_cnt; i++) { + struct prog_test_def *test =3D &prog_test_defs[i]; + struct test_state *state =3D &test_states[i]; + + if (test->not_built && test->selected) { + state->tested =3D true; + state->skip_cnt =3D 1; + env.not_built_cnt++; + print_test_result(test, state); + } + } + /* generate summary */ fflush(stderr); fflush(stdout); @@ -2046,15 +2069,20 @@ int main(int argc, char **argv) struct prog_test_def *test =3D &prog_test_defs[i]; =20 test->test_num =3D i + 1; - test->should_run =3D should_run(&env.test_selector, - test->test_num, test->test_name); + test->selected =3D should_run(&env.test_selector, + test->test_num, test->test_name); + test->should_run =3D test->selected; =20 - if ((test->run_test =3D=3D NULL && test->run_serial_test =3D=3D NULL) || - (test->run_test !=3D NULL && test->run_serial_test !=3D NULL)) { + if (test->run_test && test->run_serial_test) { fprintf(stderr, "Test %d:%s must have either test_%s() or serial_test_%= sl() defined.\n", test->test_num, test->test_name, test->test_name, test->test_name); exit(EXIT_ERR_SETUP_INFRA); } + if (!test->run_test && !test->run_serial_test) { + test->not_built =3D true; + test->should_run =3D false; + continue; + } if (test->should_run) test->should_tmon =3D should_tmon(&env.tmon_selector, test->test_name); } @@ -2106,9 +2134,18 @@ int main(int argc, char **argv) =20 for (i =3D 0; i < prog_test_cnt; i++) { struct prog_test_def *test =3D &prog_test_defs[i]; + struct test_state *state =3D &test_states[i]; =20 - if (!test->should_run) + if (!test->should_run) { + if (test->not_built && test->selected && + !env.get_test_cnt && !env.list_test_names) { + state->tested =3D true; + state->skip_cnt =3D 1; + env.not_built_cnt++; + print_test_result(test, state); + } continue; + } =20 if (env.get_test_cnt) { env.succ_cnt++; diff --git a/tools/testing/selftests/bpf/test_progs.h b/tools/testing/selft= ests/bpf/test_progs.h index 37955a8ad385..2cf950afcd85 100644 --- a/tools/testing/selftests/bpf/test_progs.h +++ b/tools/testing/selftests/bpf/test_progs.h @@ -125,6 +125,7 @@ struct test_env { int sub_succ_cnt; /* successful sub-tests */ int fail_cnt; /* total failed tests + sub-tests */ int skip_cnt; /* skipped tests */ + int not_built_cnt; /* tests not built */ =20 int saved_netns_fd; int workers; /* number of worker process */ --=20 2.54.0 From nobody Sat Jun 20 14:14:06 2026 Received: from mail-lf1-f51.google.com (mail-lf1-f51.google.com [209.85.167.51]) (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 3F666466B71 for ; Thu, 30 Apr 2026 16:02:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564966; cv=none; b=QKwSXbCpwBm5DHXZh8rXKUr6Vcso+056qSp9MdBDbAB05eoUI03IQLlyJ7sXS2/ebHclIlKc6if/8gAQu8PaQasXQu5MgMChIgjX8VYUtKZCN6K/Huf9nPxEvggys8PoBBxTwm74jbMQZrmk9m2zC80K2URLX3cFKb2nNKUDYsA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564966; c=relaxed/simple; bh=Tn5NUZT+pbq8d9j5af1FMYMU7d0yJV1oSa3Io45PNeo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RlXnDx5Rq4Niv79q2zrPoa6rBvjvhj/r+t+g7luDCBr7Nlp8w8x0+EqeTZvt23p00IE5QR/yxE61nWK/tuLoUZMLoblQYPruhX7Acb3bghVvBM0glKhmfgbmCgC0JkXaYpVdITJQI15t9wv+Gdqxur3u1Yr3QDXD59AKsv0RmBo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=JsKokeER; arc=none smtp.client-ip=209.85.167.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="JsKokeER" Received: by mail-lf1-f51.google.com with SMTP id 2adb3069b0e04-5a62f43b76aso965158e87.3 for ; Thu, 30 Apr 2026 09:02:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777564962; x=1778169762; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=IZ/nC6oZIV/xRN2y3005qSyz6fuB0fLlWJ3jGKxB/as=; b=JsKokeER2VPkBVKwq2c0EFMSKbv9JF3K3xYriVVhx8LwbCPAlGEXr55Y8VmvXPxNMR yh2NcKwl63ydHVW8ZziozO94LmAObg4cZDBlGDwGajMAwcZvXbAG9FbMGsbcBm38k/oJ Zpuyq7MtwvT3kUNlyGN6AF2QGCrXBXZ1Dkqt1IPaey64Up//Rl/VnsypD0BydAIaow0q YJIZVYWbLP3ZnTE9+BDX1WpLUd5IToiDnOw395fnMv4R5p8hA21nc4a9E8MHVOfJRf4o Aa4xqtsY060djFMoP+erUeP1zETjFi8osD+1P8IEa3+o7A5Zh4nFlYEpRWWoBPOi1+pe /Ndg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777564962; x=1778169762; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=IZ/nC6oZIV/xRN2y3005qSyz6fuB0fLlWJ3jGKxB/as=; b=Rf98LwUxxCpONu7ZMM85VZFj4xE9J8D8ATiaFfiYRuBGx6pGlxQRhlDbviu7HXSHB+ xKrm+YAzq1hpkEIK8Y8brFyHR+LalpY4CAtd2Za4lEbtotysiFL8d6brGLWQwsfDcvC5 f/Umn7jDy5BVflEli8AQ+9NsHcrxzsWLHbSOdI28UKg2KDUJtcpsWavAt2KLHcOz3Nbv 65QY+eIpWSdF5fdXIkPgGbER5/Dfm5TgpiIrNqA1szS9qLdA2AzWGpHnouPgk21NwKRH 3EbadW+aAMvnqlCv2x2pIL9ycITi4ZDbdDB3RdrY/rEgEkqE48bBfCY4JxhVrejxzHQ7 v9vg== X-Forwarded-Encrypted: i=1; AFNElJ86NOB7xBplddrRz9YgNP94nGsB6/w46hywVTkJNrwz/tuxPntF6xneIRsj+0FUdodynWzvo4dg9l94RBU=@vger.kernel.org X-Gm-Message-State: AOJu0YxnKCgf2cHZ14noAhUKdRb7duobX0E9rYKVVcqxyxcplSZQFA5u xF854xB1cBe8nrMirN7AJlwfXxxSxWBDNPP03eKrsxkYuDgdfRHVwp2o7/4e0ibOULg= X-Gm-Gg: AeBDieuPgDU7NlUfjUhLiCYuaLVnAcfqHqjyKOicoKmz6W0/h683XwSXeGl3TZIW5xu q0ya/DGpfKFIA8M5LS3R3dekNpdpfuxtF/cOzZd7FTZ9Hjqzv8q6iRdl0xCTtepnGaaHwBexTJ8 xCCBfS81gtdms61/zbz1/2Cfas3JUAaJ/jptNK2u5yZTTD9znYWEYgIF6xqZ9XvEtrha55IZLB5 qYO7Rb+lEyxcVAIMS7E2dgHmNPeByNZBSRoEaIkAhGByWIWuKUFaWgUGqScqqdO+CVFkpvVo95L NT45lp09vdaYlITCUVBtM19pxjHYb9GdokvXg885dBN6OAgQoWmjoaFJcM2VCIwzeashKNDexTv I4VrQTpWgoRxU7I5HmAT0fXjlOd4xHgVWIQ+xu+tDFC2d2YfC33W3DpWw20qo/dbST2ML7VE8xR e1iosncyTgjodSYMilzk+GG2Gb X-Received: by 2002:a05:6512:3ba9:b0:5a2:b43d:ac47 with SMTP id 2adb3069b0e04-5a8522b2610mr1204014e87.5.1777564962328; Thu, 30 Apr 2026 09:02:42 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-12de326a583sm9949074c88.14.2026.04.30.09.02.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 09:02:40 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 13:02:09 -0300 Subject: [PATCH bpf-next v11 08/11] selftests/bpf: Allow test_progs to link with a partial object set Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260430-selftests-bpf_misconfig-v11-8-e11f7a8c4fdc@suse.com> References: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1777564926; l=3578; i=rbm@suse.com; h=from:subject:message-id; bh=Tn5NUZT+pbq8d9j5af1FMYMU7d0yJV1oSa3Io45PNeo=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QB7rtyLKv2zd0Vo+lD7jhMZadO7ImkINeDH2z0HsbYRtg70xcDwaC/3gA2KGFzTlRajqwomOy1V fwc1xnxJEKA4= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g When individual test files are skipped due to compilation failures, their .test.o files are absent. The linker step currently lists all expected .test.o files as explicit prerequisites, so make considers any missing one an error. In permissive mode, declare the test objects that already exist on disk (via parse-time $(wildcard ...)) as normal prerequisites of the binary so that modifications to a test source still trigger a relink, and keep the full TRUNNER_TEST_OBJS list as order-only prerequisites so that initial fresh builds still produce them and missing objects do not abort the link. The recipe filter is split per mode: in permissive mode it combines a recipe-time $(wildcard ...) (which catches objects freshly produced via the order-only path on a fresh build) with $(filter-out $(TRUNNER_TEST_OBJS),$^) (which keeps the non-test inputs from $^ but drops the parse-time wildcard duplicates). This avoids passing the same .test.o twice to the linker while still presenting test objects before libbpf.a so that GNU ld, which scans static archives left-to-right, pulls in archive members referenced exclusively by test objects (e.g. ring_buffer__new from ringbuf.c). In default (strict) mode the recipe remains the simple $(filter %.a %.o,$^) since TRUNNER_TEST_OBJS is part of $^ exactly once. Gate the partial-link behavior on $(if $(filter test_progs%,$1),...) so it only applies to test_progs and its flavors. test_maps and similar runners using strong cross-object references would link-fail with a partial set and intentionally retain strict link semantics. Note: adding a brand-new test_*.c file in permissive mode requires removing the binary (or a clean rebuild) before the new test is linked in, because the parse-time $(wildcard ...) is evaluated when the Makefile is read and will not yet see the new .test.o. This is acceptable since permissive mode targets tolerant CI builds rather than incremental development. Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- tools/testing/selftests/bpf/Makefile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests= /bpf/Makefile index df173f9800f7..04634e6e0661 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -773,14 +773,15 @@ endif # some X.test.o files have runtime dependencies on Y.bpf.o files $(OUTPUT)/$(TRUNNER_BINARY): | $(TRUNNER_BPF_OBJS) =20 -$(OUTPUT)/$(TRUNNER_BINARY): $(TRUNNER_TEST_OBJS) \ +$(OUTPUT)/$(TRUNNER_BINARY): $(if $(filter test_progs%,$1),$(if $(PERMISSI= VE),$$(wildcard $(TRUNNER_TEST_OBJS)),$(TRUNNER_TEST_OBJS)),$(TRUNNER_TEST_= OBJS)) \ $(TRUNNER_EXTRA_OBJS) $$(BPFOBJ) \ $(TRUNNER_LIB_OBJS) \ $(TRUNNER_BPFTOOL) \ $(OUTPUT)/veristat \ - | $(TRUNNER_BINARY)-extras + | $(TRUNNER_BINARY)-extras \ + $(if $(filter test_progs%,$1),$(if $(PERMISSIVE),$(TRUNNER_TEST_OB= JS))) $$(call msg,BINARY,,$$@) - $(Q)$$(CC) $$(CFLAGS) $$(filter %.a %.o,$$^) $$(LDLIBS) $$(LLVM_LDLIBS) $= $(LDFLAGS) $$(LLVM_LDFLAGS) -o $$@ + $(Q)$$(CC) $$(CFLAGS) $(if $(filter test_progs%,$1),$(if $(PERMISSIVE),$$= (filter %.a %.o,$$(wildcard $(TRUNNER_TEST_OBJS)) $$(filter-out $(TRUNNER_T= EST_OBJS),$$^)),$$(filter %.a %.o,$$^)),$$(filter %.a %.o,$$^)) $$(LDLIBS) = $$(LLVM_LDLIBS) $$(LDFLAGS) $$(LLVM_LDFLAGS) -o $$@ $(Q)ln -sf $(if $2,..,.)/tools/build/bpftool/$(USE_BOOTSTRAP)bpftool \ $(OUTPUT)/$(if $2,$2/)bpftool =20 --=20 2.54.0 From nobody Sat Jun 20 14:14:06 2026 Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) (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 15D03472792 for ; Thu, 30 Apr 2026 16:02:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564969; cv=none; b=fAhjJqqI7n7jUNkCQiitPRp94XXX7Wa2AY6QJPBC6J8Kh9low1/t7v3BZ88k6IG32YSco2aQgEzhrtqK15/9OP3Bhf36BmnCh3R9iv7mOdmihwEoA/l8hRkZ0rd9DBZ6O/rYGXeSLyrHGgjJ4ygB72A+Osm9OUM5nwC6HJwaln4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564969; c=relaxed/simple; bh=f06ir+V8MBP2SSgv5G++kXrrlxY69TYTIXZ0uOZw4tM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bmkdjhflPoJzEDdhis48R2UCEi9WVgH1umEvcVAWp2uJtCyobKtPJQqVE2HGwihGl/tMuMsU3OBa2WklAx13rJgUzWxp89Qc9u60c5WLL2mAZnIKmEiKsHvdxa7yLtLsK9FQvdZZ3yNN0sQaDxJbbvpe6Mfg1GCv2wyuLZvUUe4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=BbgOkp1h; arc=none smtp.client-ip=209.85.167.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="BbgOkp1h" Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-59dcdf60427so990685e87.3 for ; Thu, 30 Apr 2026 09:02:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777564966; x=1778169766; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=+b/4j6CY19W7q3lBMrvL6zjiFHJtdkm0lZNuDa90g/E=; b=BbgOkp1h4NZjuZnS1ecSgcBanzQRf+I7hEzbxGYA7+Ni7PpefqOmk6p1YKo09cmBTY iJumjiaVS51V808ZI36yl5XtB5IcwP711UJLYsdQArN8BBOeaFMG3jVzBXE6l+VzXbJ7 Rcv/JWuBriULySNjQ1g2KxcUPK/nw+ijrXL5CIf0yubFZlclXFcDEHToV1MeFL8Xtf7C Dq/XQVCEbSqEvGlVSUlV4kEuzya26VaV6Vg+D13oa9zC8PG7oJ7kDCD+30Ims7k945rn OG0s3QKER4t729DPt38lXaK1uCwT3+lipqc9Y5thukO4TXaOelcaVY4KFBiT8WQp7X1n 60mw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777564966; x=1778169766; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=+b/4j6CY19W7q3lBMrvL6zjiFHJtdkm0lZNuDa90g/E=; b=qbBq9mzC+E6nW3d3TWMreD373nlx4GGBgvyq/du6NBosRYHba7411ewmi4eVF2K4f3 P/Ry4RhFmjer/k338fHGS3M/NB7XFSse1/bjOzyfkjjrFaTmnNMRBBVpO4E2oXkIuCYJ EL3uYJjeC90I8xe6huExhVEpdESNRXTE88YkskQKugcLcYrBUxy52ozhHcmttmtBfxD6 JpgKWYsIVz4iYf6vaZGbn+supVumSBt32dBhe7ZzmKQdBkUtNIBprbnnu/B2nYP78ERh IY1eRfKFKH5RkyxCKflmv3hgaxVq2Wes+LYfb0erI9LBIT5Cx1XFSLNRqPJdrGFt1NhM kxiQ== X-Forwarded-Encrypted: i=1; AFNElJ+x9I7o+vh6kfwRdZcnx/Y/WI/9HQknrU1lGtKap4/Njwxuoex7BTf8lK93VF2pjnkeOhGc3Dwybg6X8yc=@vger.kernel.org X-Gm-Message-State: AOJu0YwRr6AOL3NzE4rIkv0C/xUf+6UuiR3OEIVqTqFu2jqHt/hyYsg6 rzlTz9G73PApl4/Q2h80yEcFnMD9aoMJBfzOBvf78QL/ggIkPp3BfM9W6MYg7tbc6oc= X-Gm-Gg: AeBDiesfxd+uTN+poPYbMPQhezpmVL/5HwxFfrBtPIZ/+F1PPa8f1z45soVKxF2BvUl r4ZtxJUzau6sOE8LViiakNm53PG9PJW7oOXQq+raUZkR7OfAH7Me2U9sBRBVTDL7qGyVQtaK9Wl QR83pkY2XQVAEqokz33QlAue3ocxHR2CQDNiGaKxXXV6WWDvyryYYlYAHMGE3NQXISl0++AJQQq sSFGNKeJVtOhBU2VHSPcXhLADE6VJNKqDwOov6EKCrN64jvi9PazXNMFMVaw6vmT8KjcR384CEy +IyS3IAmPL+k795dBGYT45PQMS2pux0Kw7UuZXGPkVNrIBqX53nLSAXsrQRsPyqtBEZIdO/qJgA 3RKSIBxt8eQHJZRyxwpBuQ5s0OKkO1DvNmuG2H5j8JSJXoUz8Z8JNosyMHIBglgIcB/BLXyDQl5 fEra8WcB/xise5roEOATnNbhwB X-Received: by 2002:a05:6512:3e0c:b0:5a4:19de:eb70 with SMTP id 2adb3069b0e04-5a8522d8efamr1578264e87.28.1777564966083; Thu, 30 Apr 2026 09:02:46 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ee3b878317sm382791eec.23.2026.04.30.09.02.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 09:02:45 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 13:02:10 -0300 Subject: [PATCH bpf-next v11 09/11] selftests/bpf: Tolerate benchmark build failures Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260430-selftests-bpf_misconfig-v11-9-e11f7a8c4fdc@suse.com> References: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1777564926; l=2182; i=rbm@suse.com; h=from:subject:message-id; bh=f06ir+V8MBP2SSgv5G++kXrrlxY69TYTIXZ0uOZw4tM=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QDUnUVNq+KTiBlpnlPZJH1cqaY9VAtOaYXT+y5Wn+5QoEO5ilHeYCkdfLjoxtRlU7pi1iZ/BAUz EoNU6VSR3dQo= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g Benchmark objects depend on skeletons that may be missing when some BPF programs fail to build. In that case, benchmark object compilation or final bench linking should not abort the full selftests/bpf build. Keep both steps non-fatal, emit SKIP-BENCH or SKIP-LINK, and remove failed outputs so stale objects or binaries are not reused by later incremental builds. Note that because bench.c statically references every benchmark via extern symbols, partial linking is not possible: if any single benchmark object fails, the entire bench binary is skipped. This is by design -- the error handler catches all compilation failures including genuine ones, but those are caught by full-config CI runs. Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- tools/testing/selftests/bpf/Makefile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests= /bpf/Makefile index 04634e6e0661..a460f2ad3cff 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -945,7 +945,8 @@ $(OUTPUT)/test_cpp: test_cpp.cpp $(OUTPUT)/test_core_ex= tern.skel.h $(BPFOBJ) # Benchmark runner $(OUTPUT)/bench_%.o: benchs/bench_%.c bench.h $(BPFOBJ) $(call msg,CC,,$@) - $(Q)$(CC) $(CFLAGS) -O2 -c $(filter %.c,$^) $(LDLIBS) -o $@ + $(Q)$(CC) $(CFLAGS) -O2 -c $(filter %.c,$^) $(LDLIBS) -o $@ $(if $(PERMIS= SIVE),|| \ + ($(RM) $@; printf ' %-12s %s\n' 'SKIP-BENCH' '$(notdir $@)' 1>&2)) $(OUTPUT)/bench_rename.o: $(OUTPUT)/test_overhead.skel.h $(OUTPUT)/bench_trigger.o: $(OUTPUT)/trigger_bench.skel.h $(OUTPUT)/bench_ringbufs.o: $(OUTPUT)/ringbuf_bench.skel.h \ @@ -988,7 +989,8 @@ $(OUTPUT)/bench: $(OUTPUT)/bench.o \ $(OUTPUT)/usdt_2.o \ # $(call msg,BINARY,,$@) - $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(filter %.a %.o,$^) $(LDLIBS) -o $@ + $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(filter %.a %.o,$^) $(LDLIBS) -o $@ $(if = $(PERMISSIVE),|| \ + ($(RM) $@; printf ' %-12s %s\n' 'SKIP-LINK' '$(notdir $@) (some benchma= rks may have been skipped)' 1>&2)) =20 # This works around GCC warning about snprintf truncating strings like: # --=20 2.54.0 From nobody Sat Jun 20 14:14:06 2026 Received: from mail-lj1-f169.google.com (mail-lj1-f169.google.com [209.85.208.169]) (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 8C30A47799B for ; Thu, 30 Apr 2026 16:02:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564974; cv=none; b=JjmLmw2ZXfPiC+qHPuK4aG/xY8VbaUsbMJd7gF+6RdqVtURty9PNegjBMMRl+EIjt7Wl+IH8zEuWyXjxgVb22dPRlfqfTxXQ751imdwLRBTaX7JkcYZ6mYtzXgrbvkbGLKKigNd6XaTCwrJQKzdEMqFbpm/oCoYiytCn4nOKSSs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564974; c=relaxed/simple; bh=PEQ/hH8f9EfEO3m9jfnl1sYEE2Fvx6y97vzN398bHFI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=C8/5XkHk+MRQ2W4X0SOiN+DpA+Ha1urGJlUIi5Zo0h/RMlHkiiJdbAwI52pd92rt80efCEvuH3JTll9md2hwFt2m4DEc9/tslKxAmQkIl/9Q6g/lxt41ljahywJfPYfNaCX0gBrW/28POdCVHVfVz6ssjDZsgdqvg+CqKD9468w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=X+qkJI6Q; arc=none smtp.client-ip=209.85.208.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="X+qkJI6Q" Received: by mail-lj1-f169.google.com with SMTP id 38308e7fff4ca-38e12c67a6fso12236011fa.1 for ; Thu, 30 Apr 2026 09:02:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777564969; x=1778169769; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=da/3P3gWrWPT2pVZ+wpt21mcmTeD9JLfhBM9QpqBcIo=; b=X+qkJI6QaHKcI1BgFcwcOAaz9Bqoz+B2o458ZSCefTkB6DC3ENx+A9Bllj/XpAWfv9 o691rg6qe9nDR3JhdF4AH70hDdLvsHZ+seSd3yl2YIoJxyBR3IQ1J6hEprX16Mkwttvy uU5xOP85nQTMcp83ZSoK/Vl6i3ZiCa/imjoP5noc2a+nR6wK0E/rTSfWG7/6F905UKd0 Mo3esLJDML8hAnIHiyyQZlne4OjK0TZxIkmvAqv8sfqS521BzKq2liT83UAYGZ/me9gZ 7T/0z/C61sbCKhJHPrgLshiAvwM1RqzpMpfvhVjYo+omL0h5mWbw7FTBOX2cTkj/knF1 le3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777564970; x=1778169770; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=da/3P3gWrWPT2pVZ+wpt21mcmTeD9JLfhBM9QpqBcIo=; b=tJVRgSAD6N4znUifHibcDU3DVd/799gNd3igGsYNXSVhG2bJrwq1b02Rw+b3dKvtW3 C9FADFNC4MW4+q8W5bru2MSLJFcQyGF8QvAK193A30MKi33vUniEXJpIUlg6EfoWRFRl TynVgDMSrUG3U+nJZ/sqVSqQROFSFjP1/VUttqDUi7owGEkGfZKRBQxTNwLkozEQhQ8U WB4jyIC/XWWJzKs1uKsAj0o3hGyKopnkxlWTmVx4dsXf9nkkcnrMfEBD2AUWQMETsY+7 h3JHp5pTlFPvnnKpA4Wa7+haeKAQeYHSWtPeLL1etpX/Q/oflO8RTmponH3pS+OCEbOK foLQ== X-Forwarded-Encrypted: i=1; AFNElJ/xRUrBn29H9YfmAUUnK8CGAU+LIADdBDj7mUVo6pwZdFClA1eTDmoN2l+oRwb1qO7FpVMZrbB29/VH2EE=@vger.kernel.org X-Gm-Message-State: AOJu0YyxQ5X0kUBqwUSKVCJ7Dapp46pRXvn3Nnh/a0KHbsoTkbkXHUK6 wlvfoeCaae4LdzjHmtL1U5iRwB3qFn9tRUL55gy2nO3c1sma31dtqOro6TyVgAC68g8= X-Gm-Gg: AeBDiesdDbBi14hP5v1X/326VdhauTEZYwFLhHcSj3yojCG3yaDeJKvU5oateINwJ9W jE+ssUuL0iQddc+0BoYcVwJzX1dw/iB8vfweYoNUr9zMk4EtOcEBSbB0hYOQ6IPNeoOhmLssnEx tcIXiZBZfMufdfTCr2jsA+sSAKRBIWQnJzTwoJDNxXGPLOdbYgFq1XQqrV9BXTEpMs4u5olxhmV JBUOyy1CDwWHAYXwGVsJMfgvDJ6Wfz/ClWTEifoENt3AU2B5IcJuYxtsVeGA3PuzuTtBJ76ydRR yg1d97BTWB2GMXCTeEmTXRM5zUp4FMIz0A3egJHEppHwg4o9aUs5aarJVUadioKz8I0z6ZcU3Q1 Pteqsafq9b/P60N2vURD/vSUwMbjFlsAQNoBw66bQIQq2XJV7+tw36JE4V8rEGGAp6fwnun+Qpx rb5/jsXPEUd70dpV7XTbc9uRtm X-Received: by 2002:a05:6512:3c85:b0:5a4:a85:ba43 with SMTP id 2adb3069b0e04-5a8522d80ccmr1131964e87.33.1777564969409; Thu, 30 Apr 2026 09:02:49 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ee3b783a95sm351904eec.22.2026.04.30.09.02.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 09:02:48 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 13:02:11 -0300 Subject: [PATCH bpf-next v11 10/11] selftests/bpf: Provide weak definitions for cross-test functions Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260430-selftests-bpf_misconfig-v11-10-e11f7a8c4fdc@suse.com> References: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1777564926; l=5710; i=rbm@suse.com; h=from:subject:message-id; bh=PEQ/hH8f9EfEO3m9jfnl1sYEE2Fvx6y97vzN398bHFI=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QARd9MqO5u0wPoP+w/Wba+9N2KtAGMi1fCK+PM8eJuubbNpb8RtUIs+C+HRfnluzsj3dbuwbtnY D0RxNqGIy2AU= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g Some test files reference functions defined in other translation units that may not be compiled when skeletons are missing. Replace forward declarations of uprobe_multi_func_{1,2,3}() with weak no-op stubs so the linker resolves them regardless of which objects are present. The stub bodies are `asm volatile ("")` rather than empty, matching the shape of the strong definitions in prog_tests/uprobe_multi_test.c. This keeps the weak and strong sides on the same footing for the optimiser (noinline + asm-barrier), which is the form upstream already relies on for these functions. Move stack_mprotect() from test_lsm.c into testing_helpers.c so it is always available. The previous weak-stub approach returned 0, which would cause callers expecting -1/EPERM to fail their assertions deterministically. Having the real implementation in a shared utility avoids this problem entirely. Include for alloca() so the build does not rely on glibc's implicit declaration via . Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- .../testing/selftests/bpf/prog_tests/bpf_cookie.c | 17 +++++++++++------ tools/testing/selftests/bpf/prog_tests/iters.c | 2 -- tools/testing/selftests/bpf/prog_tests/test_lsm.c | 22 ------------------= ---- tools/testing/selftests/bpf/testing_helpers.c | 18 ++++++++++++++++++ tools/testing/selftests/bpf/testing_helpers.h | 1 + 5 files changed, 30 insertions(+), 30 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c b/tools/te= sting/selftests/bpf/prog_tests/bpf_cookie.c index 35adc3f6d443..fa484d00a7a5 100644 --- a/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c +++ b/tools/testing/selftests/bpf/prog_tests/bpf_cookie.c @@ -252,10 +252,17 @@ static void kprobe_multi_attach_api_subtest(void) kprobe_multi__destroy(skel); } =20 -/* defined in prog_tests/uprobe_multi_test.c */ -void uprobe_multi_func_1(void); -void uprobe_multi_func_2(void); -void uprobe_multi_func_3(void); +/* + * Weak uprobe target stubs. noinline is required because + * uprobe_multi_test_run() takes their addresses to configure the BPF + * program's attachment points; an inlined function has no stable + * address in the binary to probe. The strong definitions in + * uprobe_multi_test.c take precedence when that translation unit is + * linked. + */ +noinline __weak void uprobe_multi_func_1(void) { asm volatile (""); } +noinline __weak void uprobe_multi_func_2(void) { asm volatile (""); } +noinline __weak void uprobe_multi_func_3(void) { asm volatile (""); } =20 static void uprobe_multi_test_run(struct uprobe_multi *skel) { @@ -574,8 +581,6 @@ static void tracing_subtest(struct test_bpf_cookie *ske= l) close(fmod_ret_fd); } =20 -int stack_mprotect(void); - static void lsm_subtest(struct test_bpf_cookie *skel) { __u64 cookie; diff --git a/tools/testing/selftests/bpf/prog_tests/iters.c b/tools/testing= /selftests/bpf/prog_tests/iters.c index a539980a2fbe..c0b6082f345a 100644 --- a/tools/testing/selftests/bpf/prog_tests/iters.c +++ b/tools/testing/selftests/bpf/prog_tests/iters.c @@ -202,8 +202,6 @@ static void subtest_task_iters(void) iters_task__destroy(skel); } =20 -extern int stack_mprotect(void); - static void subtest_css_task_iters(void) { struct iters_css_task *skel =3D NULL; diff --git a/tools/testing/selftests/bpf/prog_tests/test_lsm.c b/tools/test= ing/selftests/bpf/prog_tests/test_lsm.c index bdc4fc06bc5a..d7495efd4a56 100644 --- a/tools/testing/selftests/bpf/prog_tests/test_lsm.c +++ b/tools/testing/selftests/bpf/prog_tests/test_lsm.c @@ -5,36 +5,14 @@ */ =20 #include -#include #include #include -#include -#include =20 #include "lsm.skel.h" #include "lsm_tailcall.skel.h" =20 char *CMD_ARGS[] =3D {"true", NULL}; =20 -#define GET_PAGE_ADDR(ADDR, PAGE_SIZE) \ - (char *)(((unsigned long) (ADDR + PAGE_SIZE)) & ~(PAGE_SIZE-1)) - -int stack_mprotect(void) -{ - void *buf; - long sz; - int ret; - - sz =3D sysconf(_SC_PAGESIZE); - if (sz < 0) - return sz; - - buf =3D alloca(sz * 3); - ret =3D mprotect(GET_PAGE_ADDR(buf, sz), sz, - PROT_READ | PROT_WRITE | PROT_EXEC); - return ret; -} - int exec_cmd(int *monitored_pid) { int child_pid, child_status; diff --git a/tools/testing/selftests/bpf/testing_helpers.c b/tools/testing/= selftests/bpf/testing_helpers.c index 6fbe1e995660..c970e7793dfc 100644 --- a/tools/testing/selftests/bpf/testing_helpers.c +++ b/tools/testing/selftests/bpf/testing_helpers.c @@ -5,6 +5,8 @@ #include #include #include +#include +#include #include #include #include "disasm.h" @@ -516,3 +518,19 @@ bool is_jit_enabled(void) =20 return enabled; } + +int stack_mprotect(void) +{ + void *buf; + long sz; + int ret; + + sz =3D sysconf(_SC_PAGESIZE); + if (sz < 0) + return sz; + + buf =3D alloca(sz * 3); + ret =3D mprotect((void *)(((unsigned long)(buf + sz)) & ~(sz - 1)), sz, + PROT_READ | PROT_WRITE | PROT_EXEC); + return ret; +} diff --git a/tools/testing/selftests/bpf/testing_helpers.h b/tools/testing/= selftests/bpf/testing_helpers.h index 2ca2356a0b58..2edc6fb7fc52 100644 --- a/tools/testing/selftests/bpf/testing_helpers.h +++ b/tools/testing/selftests/bpf/testing_helpers.h @@ -59,5 +59,6 @@ struct bpf_insn; int get_xlated_program(int fd_prog, struct bpf_insn **buf, __u32 *cnt); int testing_prog_flags(void); bool is_jit_enabled(void); +int stack_mprotect(void); =20 #endif /* __TESTING_HELPERS_H */ --=20 2.54.0 From nobody Sat Jun 20 14:14:06 2026 Received: from mail-lj1-f177.google.com (mail-lj1-f177.google.com [209.85.208.177]) (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 2B5FB477E41 for ; Thu, 30 Apr 2026 16:02:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564976; cv=none; b=U9KfYkjOGLppmTC3VLa7pmZqirVh63V9r4Zdo4/RpDs4L6LUxX+Q5hogAPbFM3GU3fv5gC4vZjWexAXRBlcYCOQlsj8QC1wuPPuFwqAJVyQK2VbMJYh6DhexqrihZBcIEG+7RfHKKNruQ+3LICi9ZUtxoc0GRDF3oR4z2Ar6D+w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777564976; c=relaxed/simple; bh=0g4nJPTP+SRNnJ6VP5Kw4a/d4c+9xCSL8ZRFVgYSARs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YXYOiC2xodiJeuA5Q4z/G7ChLyL9BLGixYYtZiAAU5al2G3+1TiP0HMSqpIcNT9Qo8SCkpyRacpflGEz8QpFuZ9xliZ98B61g+LISDQduj8weGLwbQAKeIN+qhnAxqEMOpSvzTvKOTxiMRb2eYXfSWoWF3I1PnhoFNrXkHYmSVU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=AR+CsJmj; arc=none smtp.client-ip=209.85.208.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="AR+CsJmj" Received: by mail-lj1-f177.google.com with SMTP id 38308e7fff4ca-38dfb789d7fso10287831fa.2 for ; Thu, 30 Apr 2026 09:02:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777564973; x=1778169773; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=FrFlzMIY8dqFl9fL6+GZm8ewKnQP1m4Ik6n37xpccCw=; b=AR+CsJmjYqsNqqhjnEOBFw1ebkL99wjfEosDhiz7/9UxYaGZEo3eZGZa8yIanwOjCs JXRNyC9B9jvHHDexLPvReSyAhEylwLWFxy40cteroArORM4vE7N+5z597eXSThRyYApP xLXIaEczED/9zkHUj9O0Qh29x0dhvegP3z3RBxAj3PH/DeUh44Ff0wKbKxxDM+80hQlW 73rbDRRh6BDFrwWGJIQTolozJbNigK3/TlOgKcMz9EfCZibfeanZQPBbK1gwEtIkTcUM cWuc2X1afQ8w/OkVKU7m1cK1pyU38ga9yefPQcbWDnpVEhJT9bNlqBkC1uC0580O6YNO cRWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777564973; x=1778169773; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=FrFlzMIY8dqFl9fL6+GZm8ewKnQP1m4Ik6n37xpccCw=; b=Cwy8q1WxIMefeSDsG5gz1VgiAlB6jel1hTzLBODvR0OlLF21ErnfsdpEodqrhzc4Z0 ZboO6HScDNx/dFQe8+aWMJKBZ/uNm9TqWkflIL9FVaugbS5NU2cQMxRUow7arKyslBRt Gp3eeE6wXR92F7w9bpWDwb3lnLMElxhU4B/7utPHXY5Q+dJfH6iiKXpZfcTPiE/52P7E ibTUUVwjrR99vt2nCr7eEDioO7BP3AgfyI75QXT25p/1pOX5EUZZAhLqkBc6AcwvLbvi bJDgx0EZ/K1nccYjkodWXhpZbB1ADlEIDVGHMhoBMLerjhNhNBi4avwlLG8nLjXICGin UqbA== X-Forwarded-Encrypted: i=1; AFNElJ8DoQzIqKxWu9sfMFv9GKfFH6Vk/F64rt/92NVMdCqvhrVOkaoVOccU1wtlXMhmsqXgTyzCut/161C+m4k=@vger.kernel.org X-Gm-Message-State: AOJu0YyRgGR1yAZPSHDi6XBneEiNYEmfXhJ0ygBdhq50Iou/RsWm87ni /iEYZfb/fQGv7D6YDWbzJMXjpSUmajs4KsAjAkVn7fwO7YfWGQaf8Ro77l1dHZA3n7k= X-Gm-Gg: AeBDieutoE8EOUcGCkxu34elD1gyxGpph2QxsvjiQq31jJP/LR7t+IsffQc6Q2lUKIA RjwYmECMb+S3J7AmdMyL58AkEGHswcCFy1MbpPPZDazivbVeUrA4MI7DwR9a03ZOQA8ZhGTu/le qT68r6BMx/nWTj4zddPq6NMu/uj80Tl6pTXvU1kOsw4kemPCyotqAHHkTKgKmDhQvQPwJl/pC5n BKXd5EJjqJnA6H5BWpxCJUXjxi+lpOI1SXk2arbA9SVSHRUtXhiHTB0wZnFpFAfitGN7aye6J0e FEUEgGdi93MdryYpgV19tILkKNIVvOWPfYArICPOHmHW7Sv8D/hvlLxHaymUaPm65BC+0YfuEM3 Rs1u3O5+wgPeOM4LYyLumApU0bVvNXHocA5KBWSwR8GC8LCMuKadgHSFX/n998DV4MpJF1nrVtW dclG01Vs26A1i1IzFZHGwhorEC X-Received: by 2002:a2e:9dcf:0:b0:391:11de:dd6c with SMTP id 38308e7fff4ca-3934e27876fmr12461231fa.16.1777564973242; Thu, 30 Apr 2026 09:02:53 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ee38d79eb9sm610895eec.8.2026.04.30.09.02.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 09:02:52 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 13:02:12 -0300 Subject: [PATCH bpf-next v11 11/11] selftests/bpf: Tolerate missing files during install Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260430-selftests-bpf_misconfig-v11-11-e11f7a8c4fdc@suse.com> References: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v11-0-e11f7a8c4fdc@suse.com> To: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Eduard Zingerman , Kumar Kartikeya Dwivedi , Song Liu , Yonghong Song , Jiri Olsa , Shuah Khan , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt Cc: bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Alan Maguire , "Ricardo B. Marliere" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1777564926; l=2156; i=rbm@suse.com; h=from:subject:message-id; bh=0g4nJPTP+SRNnJ6VP5Kw4a/d4c+9xCSL8ZRFVgYSARs=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QBSctWHKemMRwsrUhGlHgWOBzzJbhHVoeimaKLPlrUVLkf+65H78hcts5/x+c9oZ8Ecuvc8yUz6 YyMVNTWCMBgU= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g With partial builds, some TEST_GEN_FILES entries can be absent at install time. rsync treats missing source arguments as fatal and aborts kselftest installation. Override INSTALL_SINGLE_RULE in selftests/bpf to use --ignore-missing-args, while keeping the existing bpf-specific INSTALL_RULE extension logic. Also add --ignore-missing-args to the TEST_INST_SUBDIRS rsync loop so that subdirectories with no .bpf.o files (e.g. when a test runner flavor was skipped) do not abort installation. Note that the INSTALL_SINGLE_RULE override applies globally to all file categories including static source files (TEST_PROGS, TEST_FILES). These are version-controlled and should always be present, so the practical risk is negligible. Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- tools/testing/selftests/bpf/Makefile | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests= /bpf/Makefile index a460f2ad3cff..9948a0a02bb9 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -1023,12 +1023,23 @@ EXTRA_CLEAN :=3D $(SCRATCH_DIR) $(HOST_SCRATCH_DIR)= \ # Delete partially updated (corrupted) files on error .DELETE_ON_ERROR: =20 +# When permissive, tell rsync to ignore missing source arguments so that +# partial builds do not abort installation. +ifneq ($(PERMISSIVE),) +override define INSTALL_SINGLE_RULE + $(if $(INSTALL_LIST),@mkdir -p $(INSTALL_PATH)) + $(if $(INSTALL_LIST),rsync -a --copy-unsafe-links --ignore-missing-args $= (INSTALL_LIST) $(INSTALL_PATH)/) +endef +endif + DEFAULT_INSTALL_RULE :=3D $(INSTALL_RULE) override define INSTALL_RULE $(DEFAULT_INSTALL_RULE) - @for DIR in $(TEST_INST_SUBDIRS); do \ - mkdir -p $(INSTALL_PATH)/$$DIR; \ - rsync -a $(OUTPUT)/$$DIR/*.bpf.o $(INSTALL_PATH)/$$DIR;\ + @for DIR in $(TEST_INST_SUBDIRS); do \ + mkdir -p $(INSTALL_PATH)/$$DIR; \ + rsync -a $(if $(PERMISSIVE),--ignore-missing-args) \ + $(OUTPUT)/$$DIR/*.bpf.o \ + $(INSTALL_PATH)/$$DIR; \ done endef =20 --=20 2.54.0