From nobody Tue Jun 16 16:00:10 2026 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.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 9F2E940B6F0 for ; Thu, 30 Apr 2026 12:53:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553610; cv=none; b=VGUqxheZDmhZIi74jhJwIq1x7TODKnxqILik8+D3SavlqBuQIGx+H+KDRjlgDkF1Q1AsUJy9OV4s0aSJf0bzmSWJCuiVoNytLWEOzSwZ2+bUPF/OAv0drILpyVlSig22O7+jdEnxY4um/Fjoua6aX7UfkoADJ3qMySYlG+ND+OM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553610; c=relaxed/simple; bh=/jGlD16wwf+LKViAk9+60yGEYsvt20pYf1s5W49VBcc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oH10MH/jOynHsw+/S9fzjSXt+R1CY4t+jsPOK6IPA6CwSjwmkQZto6O6f+NmyWnG4etZaSbGA4Gx5LikfKmRfnwt+a5hIvDHBbjTy3NMgu0tdPi1FHQd0npJoKFF8gLTwd5uvqnc4MdUnFCFzf+3JSqbJ24X84bSjP03LGgNJdI= 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=BX/s3/eq; arc=none smtp.client-ip=209.85.128.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="BX/s3/eq" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-48a563e4ef7so8804425e9.0 for ; Thu, 30 Apr 2026 05:53:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777553607; x=1778158407; 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=BX/s3/eqocHaqWKJXOL3SUlNJhDlHybH4H9pVEm/u0D236n2GOm393cjnX59C/n3RA /eTEvaR3oxA1PPU0ToBEiui/XsKbcQ+uGCIIS8zf2IzkGkcvMBNCJ17aZTvY2YS557X2 L8lUu/ZZYwm6J6GYD8TU8r2E087WTXD/6qRgOIk0wr7Urf1YQRiRqzyltDzTCZ/fEa91 T2jwbjh4ofISZFN6BRF0GMacimBRH7Yw6zFI9l3IxKM9XUKrEZ+70IVnNggmvxSA846e iDG3378SyDY+djASI6ewl46kLpDIexGfKHF798yi9I/WT4OQG6J91uWwLRNRTQ/94O/B Oh4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777553607; x=1778158407; 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=CAvSYRPhWD6hSpQdxsO/Tm7IFIRhbK01mzfjKfBRFpX4VV2mxjjaJFNE67N1sTxpLH HPgnUHqO3CTuFUx9cDU6jjPtxBVTICIeZn/v6rUxZxg9yJghUXO94BN5PRrPW74xhZSn vSVta7hwckKR9JF76R7n5Pe1y7o/8u4VPXO4eAEG3i6S6SwMXnhvM2Vbk2jrHm53xjF6 aqlYxeccfYPsJf8Xk/Ib3H88HPhDiF01SeKViQ4M5tdNxyS6YiB16S8xDVMWPJvKi4zt NP9eFfcntKxLgX6a9hHOZRLd7jqBAvx3YwzpCbLTRcM5s06zitht0tKBmEPasyvrd97D c3ag== X-Forwarded-Encrypted: i=1; AFNElJ9XrFsOez543XdwuCzVOc2RMtNp/PNe1r9tQ9gm1XUsz8ElPDyT1aB/dMOh2CjQ0Z+VK9Cd2oLOUuHONUM=@vger.kernel.org X-Gm-Message-State: AOJu0YzUlPsFN6EumLpqf5qiFzXghBsU+75+Xkhkad1rQYWMf2dlW3B9 0eAtttrOwLac4ufhMuHjEmYj/qrIdlGKJGXYifnuih0wP0FGqX8pxNKiiQk/VHEelU+BENR1vEd iY2mX19k= X-Gm-Gg: AeBDievV6817u2zIE0tAM3QUpAZ/CS+HF2qlk6I8aU/9sOOuNm3ARG8MpGcppVA/TIa 9E6YHoJJsp3EfvbFwZbVeHPGab+vPb7bkrP+tiQNiewsyCdlWKWTZDD0Mhc3Q3LjcaBJYrQD6Yb jWUlVJr6qa2EXFYe23Wx+SuyZlVATmDjaoamo8Y7RsBNY5T1IOCG/dGRaEKLGrEyzC89L1jdKkP AkKAxxbVfE7MT6OhhDQuTejN0WGAMKLgO5XS69b2fSMSFaRnbqv/gsoe3Ht1MIvV3I2Rqm6ij2f Owvj6wuVWPw7g1PeNQLRaY7hmsiC9h/NiDXXM5i4/r50NeNPi9NpFT/5x5oUCo8WsxHBDPy+Rji P3ye4WRQj58fPh6x+QbP0hDplEVPQmeP3bPPy6Jg2C1m1ae/nZLSP+MQvrNH6NWoDQ3s55AxRyu 9KL70XD5yRsMEQ5/SCYee391bG X-Received: by 2002:a05:600d:8451:b0:489:1c09:6c4b with SMTP id 5b1f17b1804b1-48a83f6e2camr36515955e9.6.1777553606714; Thu, 30 Apr 2026 05:53:26 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ed1c0d218dsm6470287eec.27.2026.04.30.05.53.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 05:53:25 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 09:53:13 -0300 Subject: [PATCH bpf-next v10 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-v10-1-cd302a31af16@suse.com> References: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@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=1777553600; l=1573; i=rbm@suse.com; h=from:subject:message-id; bh=/jGlD16wwf+LKViAk9+60yGEYsvt20pYf1s5W49VBcc=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QH6rhM5l3D06tpi0qU8Si1/N1l9Wd2RxcyfC/tNWuUnFz9wkBshuox3jwVTAQY8IE4x05O95ehI qWHtqeAxplgs= 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 Tue Jun 16 16:00:10 2026 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.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 4B359402457 for ; Thu, 30 Apr 2026 12:53:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553617; cv=none; b=OcYgumpfWiE43Kw/kwd2X0kn/eEOFm0ePVB6R/2RJwTYwtsXbhzzqDlmEZd1mfMsZlzDuWpeZRH0JHkKj29Gb7Y6YDno7lNmB44yE4fmVjpBlglqX365LlAybhexxJfbRl4TXWK1OINuY8IpywmkH1XJxTA/rmoH/VLIU+HPD34= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553617; c=relaxed/simple; bh=0QJYdccmCS5Xa21Yb/0zhA86xvgSH0oN6kSd6sMETRU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cAQfnhTHBNOBZZGN48kzovh3HGTK6/aAeJoZ9UAR3SREP6Qb1ktbwtWlk/ZYdXmBQafbtAcyLKwMDP/RFZcM2DlZp1TTnQh7M+5lrOFHDYkHgBXg1WIVGRHtkS0G5iDdLdAbtmhCIE2VgBCHvkdzM/x/OyCnTRXOFN3t9gj9ULo= 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=C8sa4buL; arc=none smtp.client-ip=209.85.128.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="C8sa4buL" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-483487335c2so10097625e9.2 for ; Thu, 30 Apr 2026 05:53:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777553610; x=1778158410; 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=C8sa4buLaPgC0NYHmQ3rDzpMSg09ivzcXIU5rGmue5HNJqInXvmD8cV1gXHLMaDg8O oxas9TbxuW7cRc2AZccFuoIzx9J800mrcbqoP1b5BuWTCLx17zKEnasJ8nlZ/vg0kJy2 G7cCO9b/VPE2QxbJN1SLZB8QnDaVs9Od2HNnXDU0KsmqE5RLnartK7Q0IZ2JR+GnkVu6 4K3q/vVVPXHtJbLrm5+stK6W70yBk6ui0azv/ux/RaFIEg0lBuZOkV1CoEPeZQVmA0sd UIceRZFTz7B8T86PHNVL0pk2ZaOaOSUIwKV7lJi/yPvijzuvxZn/IZDFTKpeRLJQhWO4 lqfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777553610; x=1778158410; 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=g27xE0Kl8bInvBZOUM6vN6/0/i4ku5JtpCSlyMNP+KWy9yy/Ol0i7b17kqfdFynXjw ef0sMKILaQuf9Nj7nt3hkjey9AuoDA7oBg25w7XqH0Kr31PvdDtblkvGXMX6YReT/Iw2 RlorBtwBcANpXDOEIdMRnoZ3A/aEoeNQqfMNzyh6xe6DyvjigJge9Yjpcu9ETyVhCeU9 6x2UsiWtr4A0qhMqt/N8sUGsu9W0CmBqGS5/AeofpNAm5aQJ/aUFrT/TZMEWtxickeQ/ Ff5mOCENCbLkAjIUoZCfVRWwanK1LSfp9pKAIPMFriX6FHBEZmN/s00U+Y3OD0cMUoKf nELQ== X-Forwarded-Encrypted: i=1; AFNElJ98xau0ELXCZo4IHNscPzQYOWMMIBrJhpW3VpQt2ld09ma24B8aMNpFHrNGeG9wrbIgaz61GglAuSL/haE=@vger.kernel.org X-Gm-Message-State: AOJu0YyZal5FgJCPY8bWGEvBrO9qitBjoEdu1F+AIYJu/N4g4/xMcAIK jmVfG/WorlIS+r6iA5pU4c+Nnf5/Z55t4byk5neJlUJz02mDesZavAl3KeaEeYLpMhbTd4sw+SL B3aI4Kwc= X-Gm-Gg: AeBDieuGRySX6UME7TiZC72AsQsEUYLuJAJ8dlA5JqAGpDZIqlwXcLNtr8wTLeZDvV3 I+YRKpgfrHE8WAwrPvQd/p6S0Cyx8IpuU6CDfNfkfURYClNL/nR9IZ6vjOHO+hVKlRtkUTre4LY j/eUXCy57TDWdHovJL41deZhxV1IjBq1B6TAkvE95SGOuWSxv1irNEbHTP32xmNr5WvMWzQ2GGV 0UBXtfs88cSovPEAUPf9MBhMhL5H3++RWjAO8dxR3ldbMzE41vf7uVmO7KHfK/4aJNQEkYI+WaV 4kQnfF1MRZ6SlA29ET7kTEBdhcx7hRLuuUvo2Y6bFx7ZUqNW0JNJLkx0ocw9Qn3/ezAAxhqjV7E wElIN5cQKRSMlTl9fNm/2k+AnR4goFDmNx1FdbiS7PzQHA11P6+PGzLDN3bRDVvDvqB6eSRFywl kvBT+KtnEibhs8a7smziW/B0u2Ge89ajHEyxA= X-Received: by 2002:a05:600c:4f09:b0:48a:525b:e148 with SMTP id 5b1f17b1804b1-48a844e4a91mr42949605e9.4.1777553610189; Thu, 30 Apr 2026 05:53:30 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-12de320ecf9sm9556673c88.2.2026.04.30.05.53.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 05:53:29 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 09:53:14 -0300 Subject: [PATCH bpf-next v10 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-v10-2-cd302a31af16@suse.com> References: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@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=1777553600; l=5932; i=rbm@suse.com; h=from:subject:message-id; bh=0QJYdccmCS5Xa21Yb/0zhA86xvgSH0oN6kSd6sMETRU=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QMU4QeABYcR31gwl0/12eQdG/oYP2aQIWHpQR4t6nNBPDfefkyZ6cAE/hxk4awZjAFjMiMwmX0a ojDiUjbm6ugk= 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 Tue Jun 16 16:00:10 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (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 9495239479F for ; Thu, 30 Apr 2026 12:53:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553617; cv=none; b=APRrNESxfmn+PnqFkEuaZQ9z7kfEg8T4tATHI7irSjAcduD4pSPmAAaMvrn/TfE/jrsm3PWHj7dYWN86AV1ZvnQozap2aKGce/a7G49AH2TUWs1F5LpX9C5fUitw0uenKOUZi+JqYkRCjifff08nJ9Cx69F3fJUZ1wIm0piKDJU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553617; c=relaxed/simple; bh=Z9QzhMA/nmBpTOn+59uKlh4SuEqVq1B7WEVOVvaB7s8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aqKmiU+RrQrhhQjPTmDlYwbMGSE21qSFbXyQL6SWkQOB9rAr9snIt8u9ypo7BN4OzcSaepc904cM/ihUQUeV2xgZWpr9EILQizBpkDF3hHfFpkbnoHdl5vikH62H05fbJiaJ8p/ZyvoxGo/w9lwJINKZYZBeHnYRCGoDIkHJhHM= 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=DnHEgzx6; arc=none smtp.client-ip=209.85.128.42 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="DnHEgzx6" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-48984d29fe3so12692455e9.0 for ; Thu, 30 Apr 2026 05:53:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777553614; x=1778158414; 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=DnHEgzx6qG4eIbzpXjbNr9R8oe3TaffFJ0AcKOyPyYp7+A+Hoc0lyFEpZZajBFx9SY +JE5trlUc4X8AzYoMYKL3EKXstz76kiX15gyI7qXOFIYaoSNNGYcRIVQrfoy4nYntkmJ 0NLO1bbWAC2v+reO0zVlHLukxMWizb29mPi1So9r30ywpqKEqidyGl5fXJabz73rKPKl hF6/frRW+pP/5JZ6GiR5bl0SLHqvJfQHn7d0CiqrAddMZBsMBBBzWYzhMAuxdgq8itfy hMBxbY1G64QVeuo8hcSomBFnV6dx5aUpIAx/9lnovoRirtrifot5TvEIGmtWujNhvNwy Nhsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777553614; x=1778158414; 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=ZohjN7hEZ4Q/ZVqD/VdBA8JxMYkQo2RxpblJgIroahfFHTQMASbkCdhgdXeYG0a7uQ phbxLhuQOu7iL2mXId6FJCvoZNcVYeGl8kHwLCno/dJzZG8Ll4gNXF5BZ7XScH1bn9na JqxIiGeWoa6GjCWWCNvLaDfez+9OGNmvJfh0u2J0XdaU31VXsEjhShXxP81nSrr+c56G m9ZrdydAR76KOLEGuF0e6nOEVAgihB2Lihrju7hsHhnuJrhE4kZAhvDR7P/5z1X+k7OS FP4AVne0F9kJ09DSZmyuSte2HuEwK/6Kt3qVVHt6Ptzzn2ouF2l6lQGDbJ5ebTHRYXBu Surw== X-Forwarded-Encrypted: i=1; AFNElJ+t6OvfM0VB9glEEw5DXwpFjpn47+erVygFNMjkDAEBWBGSC0fvOAw+H2jwsH6Ft6AuS97Kytcuuqt0TzU=@vger.kernel.org X-Gm-Message-State: AOJu0Ywo0VG5T+k/7lYgY/9/MDSe0odlYYmqp1d7RBFkkDJcPZfXwfTy I3L/mBkLPAT0aNPQGsdY6fWet1Fe33x0gL4CUDsT6L9a+cT8pDZHtMIWjU4nL1tnxSnRu+JVqNj FNe6DCM4= X-Gm-Gg: AeBDiesFuy4wIWpfwXnJ60hraEV77XU0Ue3xZsdjuIIsdfQs0dqPkBnkRNASK2iKwXq dPoR26yKM2uAP/jd5TYSiqDayvbqSbVOeUgQBIUg3B5Yit9pXnviiNGBR/ImN73LFPvbIhXrUgY tHHOAaI321/+lPwjz96OcBgfy5ZkEPF5grKm4PwlEXJY+w2QOs3N+vOtIOMrYO/ithJB6Bn9epV kWnoWF6iWmriGP0PAFQnHyxosDX09bJMgfbxW9TS1aqxCdbDR38rewuQrtYQFNWYuTmir+w8ftM 4XjolOwQxDgnvOfZmnpDtFEd+1gXIFSJrDrzh4ookX5ZyQF6V4VhqvHaIoggAYhOJgtXDJvcM9n UzK6JBDKRVp8ovr80Z0fYQMfN57yAVHgavj2hSrLtNG0i4ZiFa/0EaK0VLcNZV3jm9gR3Sssoq/ hf7PH2R54yWelH0sJSpjjMfztJ X-Received: by 2002:a05:600c:4e88:b0:485:7f02:afd5 with SMTP id 5b1f17b1804b1-48a84444083mr45371245e9.13.1777553613472; Thu, 30 Apr 2026 05:53:33 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ed1c0e9a89sm9536196eec.31.2026.04.30.05.53.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 05:53:32 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 09:53:15 -0300 Subject: [PATCH bpf-next v10 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-v10-3-cd302a31af16@suse.com> References: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@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=1777553600; l=9623; i=rbm@suse.com; h=from:subject:message-id; bh=Z9QzhMA/nmBpTOn+59uKlh4SuEqVq1B7WEVOVvaB7s8=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QP9FgzRr07zdd/F/IZsEDp+bVThYZedWX1zg1RuTYGfhhcp6Wg2GwDNLX04ObXNc36IUbngNoQN h8VU9ocvITw4= 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 Tue Jun 16 16:00:10 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.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 A0677406269 for ; Thu, 30 Apr 2026 12:53:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553624; cv=none; b=uBy0pLzlz6NFchgiBEMKoQKAZOntnxccxQ3bGIdQVTOJRNNkgqEydeuyo9tnusu+0PvzKbdfDxPxgUT03UYLBk9TA+mCOectTWlClGzAjQc/vqg0XU2oa4XAgiWZBN0zpdeJdxKkPZKkl7Fr01CyCa6EqsviCx3Phf5I5EF21IM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553624; c=relaxed/simple; bh=pbpwT1aTnlvs/k4VWEJw+b4cingvftFSwGWkwuBMoWA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=G0ZcJBx4rT+haqyuN/iQ/9+d+CsLG5ePl12US3Fb1u2jxzIO4OgWQkS0i1AVWvhyuvNj0EHxbLBOUqwGlww6XVWb+w3He5PqqHBbvIxJDLGQC5VZg+WTfzWdrypBMOTgG6RhO8sdmdBM3gpEPQYrRz+OEP33o0S0LE2Vh6Z/tTQ= 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=NCHtlnwg; arc=none smtp.client-ip=209.85.128.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="NCHtlnwg" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-483487335c2so10098955e9.2 for ; Thu, 30 Apr 2026 05:53:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777553617; x=1778158417; 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=NCHtlnwgNKqI9Uvd8Lf/aPyw1jKtiG/ewZLGly4LPocHNcsheKeKfrdTTYmyUiYhmr xJhucsQq6uwrdKd8LKgOKCklg9XRW4zgfsfppQwjvQn28VpGYVD54ZROLFmh/WXouv97 QvNxtuucrelwJLH5W4XX5o8QvBzUqjyD1UGjP97vrhXcHzRdpsLm7EXmd8rALPG+g32s opOK6ozFz7YshkdcXYp/izRHuv2iUCaZVs1b3EIyY2wPVLTNqdWLn2sIamDTYW/lmEe+ S/xCUgWnN1fT5vGdj6Ns+7XGh3Hd1GsK1qN/tQkGdF6RvqVxmmqUBmtIpMAzl1GLIr91 myjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777553617; x=1778158417; 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=M8jZgGrCOF94E6eF950eL1lifaB1ce/NT7M5vsDClIayM2xDx0pH9Xt8tyWNumYAxM OcbhBHkkCJeOceTSJYSz41VNHYxLxP4VRwrfu9kh2L/8mfb4BoQ4W0ANc18RvRL+qJCo JXdbWNQ/MaTueCBT10D1PvtdPPsYI4ydzfX5iNW0RsKqqrQJ2oCWcorxdnojxmSVfPqF E7HhlfgUcwoVlVsZnfLBzWf7U2wn1mX9c2ejOfE3DXzh60YviO6/4587Ohs4vqEMtwt/ X2OTKwj5fj4ozQMSKdy3lZB8HlpIzNIy1evwUX8nchdRGC6/ZN659pqLC/epwZHH8x4n mB3A== X-Forwarded-Encrypted: i=1; AFNElJ+wrDnQKgWinLdA1FYDRH5ix5S+kE70Cp0PB6XuFAVfj+l+HWS49Ety7r6b+yjORj3ibmQgUxb5IoD+pXM=@vger.kernel.org X-Gm-Message-State: AOJu0YwUeyCVBh+t5ZXvJn1rB30e1CTdXutIiGB6ShrWH6Ydy7uaA4j1 08Ql1sFmgbPko+b/Mzj/UYuQs0O0Qfxe/55JGMx/6zLTkejsflW5371DaK1iu/TlSRZdvIuzB4Y hj74CA2Q= X-Gm-Gg: AeBDievst4zKR/wf/IUmGKtgUI10UsqvguWtrtpz0AjDZC1x+Q8NWmJYfR0uYZwvw0l NHZskbwbc6jycVQlenWNyRxHe/dSyff1r2PgRgByOXmGRedPRMmvlzRJBIunxsFMTTG8PaIOqUt 3cTh8zCNvuSdGd95TSR+lMd1BBF6ZcVwxzw/xufb9tvw3p32rjBD8o+WVfJTffAvuz8bsFHvMe1 NLSZsmPt9ptfcVRfJccV21QEtyog6RTATsKgi/nYhhcR06ejefl7vG/wy6dfGyZya74ZaVBQNfJ 8os6kVMTwVlxiPwPbuVMRD1m2eTeM/UvtH2lHXESibVy/IUY2QyeuOXNq2t/tB4fRTJ278dc1cG 5A0DYd5i4yamCdtN2zK41LnEGZ7LzxNaIJEKp0INB5lAsP8e66qumqUlf8sE/dKmS5NaOgx1w8u oheqJAldE1VvfVDOAh5vKLtKyT X-Received: by 2002:a05:600c:8b0d:b0:489:e696:8362 with SMTP id 5b1f17b1804b1-48a8451d095mr46117185e9.13.1777553616550; Thu, 30 Apr 2026 05:53:36 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ed1bf8ddaasm6815518eec.7.2026.04.30.05.53.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 05:53:35 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 09:53:16 -0300 Subject: [PATCH bpf-next v10 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-v10-4-cd302a31af16@suse.com> References: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@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=1777553600; l=1555; i=rbm@suse.com; h=from:subject:message-id; bh=pbpwT1aTnlvs/k4VWEJw+b4cingvftFSwGWkwuBMoWA=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QJIjnHCrkesnvZDd+1xOOBY/I9I5aTn568IujXQ9IpcHNyVhJvVFyR8S5WD6xdKtB20+tTHHv+y eD6jnHos26AM= 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 Tue Jun 16 16:00:10 2026 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (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 E2E603FFACC for ; Thu, 30 Apr 2026 12:53:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553624; cv=none; b=K0WmQ9Kmw20jcMDIwINpjukezqGc/llVTpbY8AdvGaWc/TEeOeemCKfuVQ47xPayyLM16cLsRycjYURNyJFGsQBOxn2xrw0TL+JhSyQceiq3gQ7xa7TUWVNpPe6SVAk+zbkX7W3nzZnGZn94+mJU2KD1e+Pb6a9DUOhGZjoBUdI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553624; c=relaxed/simple; bh=aqXG984YlUxMtsZ+i7vquyVJaGX8IceA6DEnTDh+TX4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aClowgcC/tHbEdSAUXRppRuHqAjsfRSA3MowgUEE9cWmzUDAauliQb04hYD5hRecxj/MGPJcpAjs0me4WaUqxYvNgXvxsZFvONGCDq3E4wgd+whMCL56XImvjArMjzZ8IklW+1S/pfQCfRbUwdqPzQt5sD3pECvCiR7pn1hHVAQ= 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=FEs0HcJV; arc=none smtp.client-ip=209.85.128.45 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="FEs0HcJV" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-48334ee0aeaso8082555e9.1 for ; Thu, 30 Apr 2026 05:53:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777553620; x=1778158420; 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=FEs0HcJVJQHZtzE61RuKnaYluAxs1DHS6q0Sjt98k7Z3S3KOt9EHVZUZ57CRBzZgJJ zN0xv3auDhpqpztzbvVye0/8Y7UQb7jN6Jn++MJENrn1Gferyis/kPwe2nvLcf1lHoEC RXq/hxqjiE6UH9jp5qTRSWlRDy73EKr4dYrids2RBGaKyP38TBpjyq0cgxzXWMmxNgB3 L8FJzYLF3gkYXIY0DbAjUNYIuWF97gCfNJtiLJMw9e8/83CMfxNQN2vzjCeD1Dp9B176 1m4N0uovzid+7Gb4dVYeyBrbhC5HuTU1WTjQyQ+m4w8O3weP/70Pp/1ro3hZMTJQQbsp nWTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777553620; x=1778158420; 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=BTewxlxvpqaaZmJ7PSVZQV2Wm4wYvM3jvFRHqN2+NThNJhPYfu+59o2LjW4c0br5Bw Yssw+BEugrCiz3vLRBoPRWrVz0r6dgukuu92muWujjL86EoeIYCiTjmgZZKHhZR4hc41 RfcGdIIsWJFr/0bl0hF7bwanLF1fsDmoPWz3zxfjIU28pB6jyiJwLif/veTZD2E+1VeP nTwqvdhiMniELCVZObcUrsL8YcWe2KX9OFhEMEn06eZrc+OHwV8UENgwAK8+leHwa1us UoC/Qoji40SphcxxnI7C6IS2FMG2AXayezuD3hRUB6VZxFkOopEBAGdSEahq38SEBieA ekdA== X-Forwarded-Encrypted: i=1; AFNElJ/MTQ/ZLLtef6VMDKSDw/2aTagxq3un3k6tZ1MkHZAFn/wC2sT1O7IK/ATUwFU1wdBXyvTD96hndwF2utE=@vger.kernel.org X-Gm-Message-State: AOJu0YwDUcfsUvM3Sjtgb2c+VXGB3rn+joN3Au07Kt3iKPQotyajt5Yu Amg0eZ6ljDKBo5/vy7FcbmcQDoovffhnPYkiSfp/ukXsSoXXI33f8xAM3BsPCUSlNIHrZgsDqcA Sqag6kTc= X-Gm-Gg: AeBDiesupvh2gvfYIFpuQdqqLGD/EftJcza49NFYJ1NVoa0YFvL4zRcUwsBeLNFuUlK XT9jRdJxOOM4hfsC/qfWEAv8so3pUQ+t+YvMh65HSBd1n6leRoIZdPKjdqSkGGdHxlxoEVfBVoJ P6lj3gzm0a9jhGVBy/3eOdgaun4fUVz28Me0E9SvUhy1YVanPPOGzBawchSlsxGwdy7Ierenmv3 iF6K7HhPAInFvOi66CV+hrXwnMt+fxZ3c3AHsixuvUBNzmd5o4gscOTkTg6HS4NBIACNN2CUYp1 i1CRtzTP6Sbi+tCb0IC0kk7llvL9Uzcj1P0/MqXYqJ8wyOOg3DBjAQpmd1SSfvdGX5Dh4nXAXHK OfHVxYo77k/Or8VDFKY0ykuPoTMEJMoVRk3boKg3ZNOlRVqzjxcKPHH2uT1O/vhM7BJ788SnZnp RHVtqj+uJxl3H/h/gcdzzTYddM X-Received: by 2002:a05:600c:888e:b0:489:1c1f:35e6 with SMTP id 5b1f17b1804b1-48a83d6a8dcmr36394175e9.6.1777553619863; Thu, 30 Apr 2026 05:53:39 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ed1bf6d315sm7161270eec.1.2026.04.30.05.53.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 05:53:38 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 09:53:17 -0300 Subject: [PATCH bpf-next v10 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-v10-5-cd302a31af16@suse.com> References: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@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=1777553600; l=2402; i=rbm@suse.com; h=from:subject:message-id; bh=aqXG984YlUxMtsZ+i7vquyVJaGX8IceA6DEnTDh+TX4=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QMfNfx0uSTz+XT2LVbDrne0xam7XwpfbbAQ5V7F5ctX2+k09VLAnSHIE2sFqnwGIlHQTqmWtNZO gFSqvfQX/FA8= 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 Tue Jun 16 16:00:10 2026 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (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 A3FD840B6FF for ; Thu, 30 Apr 2026 12:53:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553627; cv=none; b=ZNQExv222YfH/cwBeFXzoOf9XgQS+eJJRUbeJe9iydqPm0726m5bupbnJ5fOE3eF0uRf1IyV+9liQQHRfB0mUE02NGyul/OTU7GWV2/uIgwGbYO0x1XgG9tu7XFZrcRLl6t2AcKaBcfks8JCx+h6JGCArC4hGYZe1WqRs0yelQ8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553627; c=relaxed/simple; bh=jhJGxFLXxkLJMjYYafkYMHZLmy3CdijahvtwkglC+SU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ls1hcOJENTAWl7RCXnBXCAipACa7AHpWNsoj0wuRARlJeFylSlWFtKaCqp7tCNnacxXGBT6QdFDEg6iMoGVcmoI0g8hABZFjYER1U8vvL3Kp956rwvwji8yoPKYnj+jxzcWmeaf3QtH7KY+aM+SuWnxE5b5J1bdWj2L/u4n+Pjg= 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=NJb43LMr; arc=none smtp.client-ip=209.85.128.45 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="NJb43LMr" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-488a9033b2cso8383125e9.2 for ; Thu, 30 Apr 2026 05:53:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777553624; x=1778158424; 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=FT2xKlbvDdzA1YOF+HW6JVqGVpjLZaiDVQi7htx3o/c=; b=NJb43LMru5z2jqAW9FreObAKaEppL2DzYUCPILGchwZ045As3IsaAw1RpnTPqlrQBn jtA8sAvBRkR60YRKk/Z2/Txjkj+QMTR0u1xqGC95KoxloC+s6epkSrrTNo3UsPFtVUBO Qtn4M3SubCxCpkKFH9OGkWwimJsHZMy6y6WTCYSSjUSiLIw4VWD6eU5M/wTSDLhRDEXM Tus003Pqu7o+6PQMqCCfM+K9QTx5BI6VG5saRgz9anSjvRErYu4QBXWuUPRyng7Gcykt GMFjvjPhALMfKdFGScvpOukc30XB26QiHqz+kAPbSvCTTlIrCiyF5xAbcV5P07W6d4yv U+MQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777553624; x=1778158424; 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=FT2xKlbvDdzA1YOF+HW6JVqGVpjLZaiDVQi7htx3o/c=; b=I7N0CFuwaZzu1QqtgJ7eHJWRGrVQGqWlfLnoJsnid4QPmUdf5rHOkNPp/PwVMaqIZa zsWYikzbocrj0WCNgcnlT0pDk99aZ6uUVL3mziDIczzrVLy6/AmdPXv9hzdTt+j8aTap VrAF1lyMcLk9blyF8BnhY+IVaHgeYCCmBlTrCGgHvEvk5UZ7TCNS/Aazv7HRDrnyLpBR mZg3+IV9/t68tTKXuX6h31ldSaEDn36jsfNi0wPL1sFKKyjk/Z2lTo7p90bDVZsXaxms ZVurqdlgc7kvnsfNDg1ZkCZGTROuENclECNbkZM+/AQpij5kSTziTdXzR7J/XSlzNBF3 +sxw== X-Forwarded-Encrypted: i=1; AFNElJ91fVuzJUmZzjA4+6CoiQkc2kYxHtYgZTKAoANeYM0Bm3iz6i3Dk6dV6EESSgugF+u6QW82Y91kHX5DtkQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyfEI5kPBa/ldtzVjKKu8ltLNCpufxHMmGSA+aXfL9zG2M3ulEq NRCCBKYOBx9iJhk569NStlAs5lJwTT+vCnKuxqU5LQRN0dmOp9ztOSou+L8aMxdUwrMEYNj9CIy qSfXVZbU= X-Gm-Gg: AeBDiesdH753bpR717DRviRQrcXYqP8eBCOuT4Ji7o/bGg6e4FMs9S9ycerpMaqe9dI hre0gSAj0icDX0yaUSuOmkBLIl+eBCd7Q7u6cwZ0k04wl5JhMSL9x4In8fzAKTBgojtzFahCdkF zqEMN+mLTLRu8t4m6oiijKomBGk2RNRBKQ+i6p/Qpr8SvHYIdgVPYWe6kUUY9n/0VqBj6MgOuI/ 0+qXb9/bfLuWz3RWvJ8JzyF2E+kDEG8MoUaCZkqm2FVc5k7wgg9Z+eCC4ZYH3AGw/YytMP0aD2I siq2FmzoOe+nSzpWTabG4RcgYgiqwk9mgO6mia86mMo4hHYCykXGiFiurhjQv29Tm13DgnTZpKL r6gLPNQ6XXF7nZPdiAq9ZoiZGV1uwipYBciTGmSk/bpAPrNn3sh//U9UmFzgeagz6Eae5b8H9cM aInJwGuewWHG9LTFFcWieIFzYw X-Received: by 2002:a05:600c:a409:b0:489:1fa5:997f with SMTP id 5b1f17b1804b1-48a83d6c37cmr37470475e9.9.1777553623585; Thu, 30 Apr 2026 05:53:43 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ed1bf8e268sm6512299eec.12.2026.04.30.05.53.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 05:53:42 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 09:53:18 -0300 Subject: [PATCH bpf-next v10 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-v10-6-cd302a31af16@suse.com> References: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@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=1777553600; l=3956; i=rbm@suse.com; h=from:subject:message-id; bh=jhJGxFLXxkLJMjYYafkYMHZLmy3CdijahvtwkglC+SU=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QPyh1r4yQgGiTl7p10u76G1+dBl73UkoQ6YCfM7dVMhLmRrPWXvgE4uU12xenX0boJ/djBmN+wv lxiN8QRBfcwM= 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 $(V) so verbose mode does not double-print the line that the recipe shell already echoes. 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..9becc077eb23 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 $(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 Tue Jun 16 16:00:10 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (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 7FDD340F8E0 for ; Thu, 30 Apr 2026 12:53:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553630; cv=none; b=ulFpFNU9nBVFYCwXt15zV0rLS/KX7YkeCq7iO/BKxJnTYJzh9zUUlkjyasIhMayAWZjsLJfbVysVrM4dUxKBuR1shkXo8/xY0q/IaaIDsIMx8bH9F8ghPMeGJji5dhFYy+kAnVetfzg02vgm2hB1ZWGwg0wSaNONZX9p7IKUtr0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553630; c=relaxed/simple; bh=M6OJfT3qSdP4lnrHz8anqee8kUQRnD0Hidbc1/0+8Oc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YfGWQliA4fjVcmoW075SUcUCE5FiGJS7+uoTB82bP68OOn/t2pcj+ZFmsSn1Tf+DTv4Xosnx0P0jRcYAx4RtgKbe1XzN08QdgocvvgSdTpeWd3uBr9naJwZfmXK1Ad/qnx2XLmvVYFV9gHT1cSxXO9DyXrI5XKJMY/JZZy2eVh0= 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=V/wNilpH; arc=none smtp.client-ip=209.85.128.42 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="V/wNilpH" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-488b0046078so7887175e9.1 for ; Thu, 30 Apr 2026 05:53:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777553627; x=1778158427; 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=V/wNilpHOG1q1hHDiUCLUFQaHQsmF8VfP3t7OPrtrr4EhiIlK5McSnXdmW6zTAYA2F 5e7vloE3EH0ms7QXH6NGnsdYfOaKCQdaj4PC9MK640le5DwIlm9mIrKtih/I3gZNzvQT VG8Qz0fCg6ug8ZREZwXeKti6Bkwch2OBn6TnFnLNfYwcMMrEqrHEqJWWc4vx0krZzdLn LCYfr9w5+jtORJptHHO+bH05f4JKrrpS7oa0cl9PM0jEGKJIY49szidL6l3uqNixAIXb AWiPY2bPM8YH7u8qHqtR+Q2p+hDKFeiT30IahdthoPDLD/43pE8FWY9CW/+Wqsq2PMF4 pWLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777553627; x=1778158427; 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=e5iVrJri1PiJzYNqt81XV1VxBXe/W1s/wD4r/huzI+U1V8TZh56n8EKoK9ENlDeEot L+xoN9yHjMdgDrKG3z8hDLz41JZ/sBgH0KSfIRFeZ0LgFQ1yYDxD5yha0q4/R2JCkvLo W69oJWShYehUfKrTt9F2GwCp/ST14dB8I8rOa3fZ3bqgqhWCjyzSsTzgXlF2hNH3lP32 kfOF5i7lCYh829JVtBOk2OgcIf45DubmiyloP0zzTq0FXEGeb+7274VGJT/zH78zGILU tvQUeS6cazj+5w0uWJ5KEWt868fiRMCBKrs4ik2L2KFUlfeW+HDuDXE2MaMeCX6WIUoY bX2A== X-Forwarded-Encrypted: i=1; AFNElJ8LbqztpiWWsogP19snH8YsA3P4AsgITOG3neHFvwycY1nqnlSgc1IqdkupUmOFP7cU49pmP4ZDLoxJz6I=@vger.kernel.org X-Gm-Message-State: AOJu0Yyd+t3pqgDp+jzeaSwBpaEXUBYVUmKQeZkppOz+m8p/nQAQkopw 0nC4ln2pAGHbSR0mnMmK/k8MzBbo0w5eXy41pt2KdsuEpz4J0pXKnIBw+IwhqP8Omwye0AtejuH nj5cjVes= X-Gm-Gg: AeBDieuBI/ZWwCRm88hoC1t4ZfweNpiJg/C1XcyAUAG8rSsq+GMmyVQ+XHy0cbzNHw0 xPpIs2FcXorG85VPbs5xXOUDBBxbcBVaFQjrodhlP0m/Nr8PXH27Qok6UR12mhlGf2pfrGd/gGU gYAHXeqaoMfhJocwmZfG1fCvihxYMzna1bjroymC3hh0a0dFcS2xdxDBAHuHT8QKHiZDRjYC0HN vWpzEFoEjlrfQi23b0mDncbb1iWdwl/BH3PtJbwmTwWiMk8JFve/mGP5G/88BcpvtoE+baZ1T2R 3YBJeTFs94K8gDaumD/n0A+0dCQBYvRPJciNXBNcZJXjgHbiTinkzYrBQUkISICU8k6QMjeX9BD MkZBnoO8o4GJx8nLILGqj5Intw7kuRNFB1AJq+91YITAkFHjq0UhBrR1hZxZF7PNkQwutpduINM nPFuWL3H1MGVTjouNSEXY5aykYMehGi16RfsY= X-Received: by 2002:a05:600c:8599:b0:48a:568f:ae8a with SMTP id 5b1f17b1804b1-48a83d6c22fmr32217545e9.8.1777553626647; Thu, 30 Apr 2026 05:53:46 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ed1c0d218dsm6471548eec.27.2026.04.30.05.53.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 05:53:45 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 09:53:19 -0300 Subject: [PATCH bpf-next v10 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-v10-7-cd302a31af16@suse.com> References: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@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=1777553600; l=5462; i=rbm@suse.com; h=from:subject:message-id; bh=M6OJfT3qSdP4lnrHz8anqee8kUQRnD0Hidbc1/0+8Oc=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QGz2iruQMv6+o+BVxXCvB3+eBI2v3HqK1g48+kye0ghRxPevrCXc9vl9d/bJxc5aHx8zxs3YUZl vAE7cDpHc+Qk= 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 Tue Jun 16 16:00:10 2026 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.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 9404340FDBE for ; Thu, 30 Apr 2026 12:53:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553636; cv=none; b=tbC/TLjKT4/qyoWaFB64tq6w6AN8/GNHlSUuP+PGi0oxYG4wOW6EUHp4ou/BYC3mG8Ac+UbWgOmSwHHFZv21jB9Br8g+AAO6Jh+ST80xb7n+gJG5E8wbs7HdAzj2W0QJm7E72N3Nu6Ss7mhzbxiuGrZtcDUPQY6a1Om3AOepQgc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553636; c=relaxed/simple; bh=I2jxLztduWlfcb809/jc6vkR7pIiCKbFQIGItdln2/s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=N1wYuompRmMgzlGh6d/3bCFnmO/6zLAT0M+TvLJPiP6A29zxIaLk0xCvzdWdNPHqFHo4R4csPrXfH0oIShR9pAHO2TLDe0uIu4U7Tv0qaZMBpquoHCylI8uRbU7WkgRUAyzNdqA48bQOHvuQeO9PEZWFgmwpT5gZU1OUfnj+G1k= 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=U/6MQlw6; arc=none smtp.client-ip=209.85.128.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="U/6MQlw6" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-488a9033b2cso8384545e9.2 for ; Thu, 30 Apr 2026 05:53:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777553630; x=1778158430; 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=Q+XbIgjuLQuX1ZjiX/bxTtSVSE3u4tQE56sxmhIL67k=; b=U/6MQlw6i3VPQIReT8bkpkgWOQiaApuJQQ30NrlDSP6FP/zKOCx3G5MKHavp99xZ78 d/UnMFG0yq5QDHd9HUIuv+xzPXVMRFkCpdw91vAqlAjf0jlEMlbUAse7qB/dxv51FJNF sa8D20APeAJxVZcrAeaI8oyjNsDDAtZs/hiYhk4LWiLpMGMEb1EiqwZmMYGoUWgYemmR v7bnbytM3LAEQ9uhSju1npLzVqPYjyg+MswOx7TZtZnAa6iX3L9+Q4+eWvS1JDM7eKfa mVebM9xF12XpyZhKEBY39Ba0zusHQTtdGS7ZMCDDe1t5y5bfX76etASiT3ij2MZGSyl8 HqFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777553630; x=1778158430; 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=Q+XbIgjuLQuX1ZjiX/bxTtSVSE3u4tQE56sxmhIL67k=; b=Ly/2GwGAEwwjGkt14+79idCRG49dtH4jzIKbW4nmqZRUqbpKUlpN5Pp6iKF9Afvl/r fZCTAswxKq/c1Pr42BETbhnfUXkqnOTss9eGdgjDL2Jwz0qR2r0JIlkZ9yID6wTQyIrt 1V4mfu8tn2PovSpOJhit6TgfKxqLXFbt/c3CqLd+fEevHrnrg8TOwgu3WvNIFXoXc9cx pgobiofPKq0tmXpAmwxjG7VP7kGCvkEnLueEWU5lRDEt0dgq8XXb8lDkGZiwAJCGemAh gHN+sTjH+1QnaXsgokme91QuuC5R0+PuGvOSNdh4VM0lKsuV8qvlK9dLcDCKRMss2oJR btbQ== X-Forwarded-Encrypted: i=1; AFNElJ/BqUbtcyIG11xFtkS31YE67Bul52flFfuKKiHA0GMjgRsQte0MKCvCj8gXD2unj4gsgboyjKQs3jSh7MM=@vger.kernel.org X-Gm-Message-State: AOJu0YzNOP3ShdgEJ1JZXjSGl4zg3Ev7hg1LM4L5tlhl7edjF7ZEK9ll NGmHPetJjmbcJU6F7qDRk1qQZaG4svWO3oXULkMSJNiI7aUjxiqPt7vd+q9RNwMI0fNKNed1yj/ SmSOx+8k= X-Gm-Gg: AeBDiesY/8wpphOhYtt/FNjYaMLcdpzgRZRPMrCiHeUFtYU70swuAEh8Rocv2bFbb8p 3uHpwN2aeDj6mO3qSRaiWUJr2mi3/AZrLg6a5cU6JwE8q+QXHDrCip/SA5RF0YRGMoKIEGE4LJr dIPl3I1/ZCbCheeFHJkscm1kg8z9IeujeQuyu13s8han4hvp3kOm6xqxP3F3U+Xq3EVgHRcAzBD fCtvBaVDfRDws7Lm/D+lB4nUXyJLzEylrE5Ww2kXkg+Ib8tOkqgfilD/01HbIeR+Bd+D1IP8UmV 3srHw54KoYw3H4IZw61BZK4RkziS7t3KzDRGqSBdjet6D7WFXSHb3JWQjMBnK3eZuSFoIrxKTaO 8yoR6PwPHLeUi8KJ9ijz7QNt6DU3upzJ3sKXfB0qzZKw6a7tcNCMr1A0uhKLQjtbVm/HjPHlSET ZDfDvIf9KLidEPJjq6hjtKgUZR X-Received: by 2002:a05:600c:4688:b0:48a:5342:36b5 with SMTP id 5b1f17b1804b1-48a8444d7a9mr50732385e9.21.1777553629800; Thu, 30 Apr 2026 05:53:49 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ed1c07058esm8543218eec.15.2026.04.30.05.53.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 05:53:48 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 09:53:20 -0300 Subject: [PATCH bpf-next v10 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-v10-8-cd302a31af16@suse.com> References: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@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=1777553600; l=3578; i=rbm@suse.com; h=from:subject:message-id; bh=I2jxLztduWlfcb809/jc6vkR7pIiCKbFQIGItdln2/s=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QKqqdQsm33ueetLi82n66giduvjncuOEMLEwyV2vO+e5ZLsOaGwzTZasZ7Pb+J1KfYDzndi4FiJ 5jpUI9g0qewY= 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 9becc077eb23..a64e822dc540 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 Tue Jun 16 16:00:10 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (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 3777F40B6EC for ; Thu, 30 Apr 2026 12:53:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553639; cv=none; b=tcZZVEZUubLQg1StkEG9iE/OvmcFeuZx+LMHRgVdjDb91tnpxpDYGc+HARYBUNNtm2H2oqC6BkCODNcy+/PQB6bp3+vYuXWxKMYylCLqzxGFuNUwCE1y74ezKJuNeC/jtEgb5MBrudhmhq9HJ4g09339qze3mqjZ1/0GeqaSn+s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553639; c=relaxed/simple; bh=g1IPrukXdfTha1L81vMX7RIO9kNQy26KDYwIrzAmnCQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Qe+oHY3vU74B8C+1lotzlXkZJxunkXxzn7YY6lOHWnM34o1OYQhIcEzR3aVy/TPTx/N2iw+ii7vHIB8kW+lsyYXyBMY+Qpxyp2ag0zhaSPgXtvUeeAx3XEhrK9LYBJ3UQbiXQs5pA421U5mo/BMpBdMFxwbzxkW1afrC1DijLH0= 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=KcdNUl+f; arc=none smtp.client-ip=209.85.128.42 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="KcdNUl+f" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-488a14c31eeso6464235e9.0 for ; Thu, 30 Apr 2026 05:53:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777553633; x=1778158433; 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=f7/TuOwF2JlmKiSd4FRcLat+/O0pJJ7pZtNrVGAkImI=; b=KcdNUl+f2Kt0tBgXJ9PBZHSHesce+jTzIKB/buOfq92I+udLDukn5HP7XtLgvMOdpx 1+l+NmNaFYrgOYkFRZuv4OpxC32lsQ+4a2uD22z1FbAIxvOIiQbq5eB5A7mO55dhRSkh sOILtZHIGleRAzGXNM94KxlvN9sJAWwdZUttM6eMZzAhHFYa2Td+n2r5g7Atq1Qi7iZ7 8rWDygGoQLXcuhAhZQ+kdh8k115v1foLoEiXbyMxone95W01uEuXSpSt4p3sPtRleBW8 AcQ6P3V23M5YOhVghEZQLreQfGUSjC3rZuZ2yCWoU82dGvy3bzPSrVS2y56Ey3Ke78lg TakA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777553633; x=1778158433; 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=f7/TuOwF2JlmKiSd4FRcLat+/O0pJJ7pZtNrVGAkImI=; b=J0xgd8p3ODpIdd+8s0Bm8/hA2Ai770bzU+grmFNDeTQBSyTAsZgtczeK98NpyBdgkt 9v7P1eH3UQ98qJp2xBdZzS/G7wr1g8IUWxMrHQGJfDfzkck7geROL9KNM/xX8w0Y1nCW hBhfIBjE215AKzKEtepiQXID0RUdkNyn055RXNhjTuUYxhEDKwoFtcSvsSxXWp7UtKUE +PD5RsoYpflN9hJDuxgED/hdDV/OFftccWwPClTKfN82ufCNokAhwWnWYN//eAEgBHhv MTcfv4zULaGBAMBbsP4qSCgF/KI6Fe/VlrFpw22ki9DcH8uwOvsHcB2kdOgsSYkqwkqS h8pA== X-Forwarded-Encrypted: i=1; AFNElJ8Y9bg9VvPVbfC1goEY4IFosDmsXt7YclRoE43RLOUujPZpaxiDwIzCCPomwXLuxI9Q+bzlOERhJXN8oEE=@vger.kernel.org X-Gm-Message-State: AOJu0Yxr0UR8vDVzwATOHq9+iNAZWYPRCYaXAN9aJJMWZCm6BAVo2YEf QjDNWhD8W79ScFqOaBCD97lTW5wW6R/3IQxt0AXrDHXMjNOURoeXIRYF9wD2M8uc4/mZUchOqRD F7ToCRsI= X-Gm-Gg: AeBDiet4178Wgt6UvTCbFXjRPhRnqYCikpKSRfNpASkWoySV7QYwhBLdtaosCpsSyr/ LTCLDECF1L2buAu0eF165365n5pgA+d8TyvTKUckeooPUt6SMRLulfKvtLvySvUPLZpPy7bGk/G ie4PtD/Lhynr5okA6Ls5yPskTMHbxpols6NonlMbhFzkaBPd+AsoATDMe1GVCyzYWiRmAzaMRsc u7EiKAKffFNWzsCL+u9eCTzf1dNPY2faBYTm+gb3IJJQZ//h/48DNBzPfWOPgS2dFTl5J+3+O2l xyArbUf67W7j67jAV3Gs4RLy+BZfyjEoIUjzVBqkYZkasLLydOpK32nFcEEhgtVPtfD6npMC4Z4 s7RalvKgPl15j4J2bQxEFf1y725J2xvC86lXWbVfAgP6Vqu1Lpi9Ac8zuAyYhkoWg8wjiogIxnU GIyJmb8+MFdqtSPFxnBsEPORE1 X-Received: by 2002:a05:600c:a30b:b0:48a:58ae:993b with SMTP id 5b1f17b1804b1-48a8451cfe2mr34518965e9.16.1777553632830; Thu, 30 Apr 2026 05:53:52 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ed1c07058esm8543457eec.15.2026.04.30.05.53.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 05:53:51 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 09:53:21 -0300 Subject: [PATCH bpf-next v10 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-v10-9-cd302a31af16@suse.com> References: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@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=1777553600; l=2182; i=rbm@suse.com; h=from:subject:message-id; bh=g1IPrukXdfTha1L81vMX7RIO9kNQy26KDYwIrzAmnCQ=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QFrprJLNfF/AMQtIohJ9qwKSRFoGc3sU5lSGc2K+fLOKPKd8TPdpoBYF716d7APQ1EEWkWctrAB bALNYv5AqLg0= 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 a64e822dc540..0559742137e3 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 Tue Jun 16 16:00:10 2026 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (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 A733A40F8DF for ; Thu, 30 Apr 2026 12:53:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553641; cv=none; b=FIObY85dNCk2ymUYtcQtwL+yAzlIhsBOPWxaXIod8qFLqth3aJjkWeKhBucjEhCyVM+5RgdrVGrLkRVPQlHg3Kgq5Srnk2uVVkH/TXo0FDX3N8PhvCM595m4eZlhGWSZ1naoTja3be4oKI+LbdpPigFumAXZAMgu9PGfwZy8aNE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553641; c=relaxed/simple; bh=Onl8r1+vgaXXxPalMwqiUm7LQPBj7ebNHH33wZEkeI4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=n8eMRq69fIJHX5SGSSKGofMKXmv1H2KlShg53Db3hHZlMDGgN2e/a7m0ih1lvBDPWjtU+/VxJ+nlr4jVMNAWFqwLzYIspXxGZYbwEpGoSxD5/mSpWMeXp6XexTOQBCmz2bj5xCgEAo0YTRwQnYdv1zbjevABG1Y930sWzIQMrWU= 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=Ya+hC9PW; arc=none smtp.client-ip=209.85.128.46 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="Ya+hC9PW" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-48896199cbaso7787405e9.1 for ; Thu, 30 Apr 2026 05:53:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777553636; x=1778158436; 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=a4QYgraTyRNTEBA/rrl3/N38ijho0hL7xEX+M/3l600=; b=Ya+hC9PWyGcCylI/zNvwi+R8AuNLNsRu4KNwZXm8g4fgWn/3GlJMd9JHm3GdtvQrwy 6Dg4dSbjiYA/2x3i80lh9LA2f/YVazNZHaIyBJaTh34VRMWwhLMHJs+Wt2dUIVKRPIzc 6VyarckDdVQVMRVC42IIpMpy6st/DmgNwcPFjtyF+dYGr5eyWH5qxCu1c540DzXA/WbC 9jWvv/9GI6uiZeP/evsalBPZi51DBVrRlFHHpHo0/juShlv7R+5+ecsN6nMGXNwEdUHx Co/6afgjW9rLTcX5hOQNUTP/Lxqy+oxecbbxIobykq7QeqvWfs5oNeqTTnGlsXMtDTQo d6uw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777553636; x=1778158436; 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=a4QYgraTyRNTEBA/rrl3/N38ijho0hL7xEX+M/3l600=; b=goLv/nNmsVv2C0X3NRMNxHAmRuy0XO7FQW5wMYzC6tJKeZVEovgBg81XpOGaQa3k0v x685e3v47jlNvEjYLOMtMEODIDsAzkIlQ9HTmIjP9ZegHjM4QGQ+LraGTbEg98DBkvJU dqPr7bV3XTmRFVooHaCi5aLma33Foi9dmBIJGP4m79i0frp+A9n9XMIba8Hr8BhcWOfi cotG33iu9fNcFxTaIxLI7D4LJ32IARma3nLn/KvGS6xRTKOHEJqqX0fEBeZkZVa1RHqY UljDSNzFVPh8g9zaoDHfAxOPEiEETo+QnA7Ux0PXxlK6sZd52NjyOL79CH+Sa/WoqFSv ORdw== X-Forwarded-Encrypted: i=1; AFNElJ/YItYpBbUPia16GT65hDqRd136aJMECtqywmGXuMHBAkUvcm7AuOqqn9unTK0mnZTIHtAY79mXhytzxQ4=@vger.kernel.org X-Gm-Message-State: AOJu0YyHiW3Iftk4Y0QpZsKSDdDiE1PWHeatjYJCOmej8/ONSWkReIaI uKf9U7Typ5fxVW+FYKFsTCfmmSyBYAWa5rw6Br0zgMf3yJZ2E11PuPHNDGJuks6PnAa7BjcLOct pyubl3Tk= X-Gm-Gg: AeBDieu8wEyB60ij5ke/YgwVRAswPoba7Od6D8oDGMtjrjj7VXtUOE0tfAm3be+FEGo o3rMzKXkaf7Vet9OZ1UjAGpA3JAtmxoPZIsDBfV3SY/YGc+FVcUpeMEpZF3+6/wALoUbCZzzM+u Uyz5o70X/KUNwko0oCvoFKhMzEFN4Rd4EDG4BBumvTmzTC7th7NnSMYBLdWNx2pGOiYfI336QV/ RlC6GN4JYQwYkAlikrhld9GyzRy27LjfRmanxTt5kcnAnYuDsFvaK0399vHxUY7XNbb7Udnptu/ jI4Dj4Qp4hI1F8aR560FAXrp65ozVey2MXmgjlxZrcerOeELYmln5+4BWANQp+pk+rqOd259AWq E8uqpDqtKiTLjpt6/EF4tsVyh2TMJ8fG55jtzZ2W1sj97TWkKKniOGs0PFKunLhWGtDu8pOzSli UXaE8BYXPcJY6M8qXgmwolysso X-Received: by 2002:a05:600c:a409:b0:48a:53ea:13eb with SMTP id 5b1f17b1804b1-48a83d66d44mr37057325e9.5.1777553635781; Thu, 30 Apr 2026 05:53:55 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ede68916f5sm760117eec.4.2026.04.30.05.53.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 05:53:54 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 09:53:22 -0300 Subject: [PATCH bpf-next v10 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-v10-10-cd302a31af16@suse.com> References: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@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=1777553600; l=5337; i=rbm@suse.com; h=from:subject:message-id; bh=Onl8r1+vgaXXxPalMwqiUm7LQPBj7ebNHH33wZEkeI4=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QKnCkqkbl77eshiWVAfsR1blYaWvaIgzs5JzMU9qwgHgCJfvN/B5fjkPeGnzZeqbvZFGS7pTMO6 /8NH/Z1/TvAA= 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. 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..5a864cd8ad1b 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) {} +noinline __weak void uprobe_multi_func_2(void) {} +noinline __weak void uprobe_multi_func_3(void) {} =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 Tue Jun 16 16:00:10 2026 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.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 A8F74421EF5 for ; Thu, 30 Apr 2026 12:54:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553643; cv=none; b=boR/Ka82PczB/mIUE+QlNxQxSBkkgovutsmZtRPzlS34tlkuQraR2ODKAT1xp//ocxpQBEV6inzYFdXtOMzPRgdP9mhmn2LFju3nbkb1CdGIFusq2h6WYxK7if+x1HXsv/UuIuV1iF3JCStEidh1csK3GWfuT6VWml0YWf1Gz4g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777553643; c=relaxed/simple; bh=/WLI+3txZprQ79s0dGyS6fODzXDjv4ern4WIbfN0S30=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SLqtiFKS/KTBYM71MzTF6jFcQxf7cvuePr5GkrWVZPnHaN6gQJiIsBwr186Vdq4GGzFT1oSl+tiLVght7ifeU7OiD/ZGuUY3cxS9zuGOq3Jtej3IqJD7JoEqNLZMjnu1Y9O6mAimBX131hfE/ZYcOJ6boBxjqrgBMr3QlxUTLZc= 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=SEIWopPe; arc=none smtp.client-ip=209.85.128.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="SEIWopPe" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-4838c15e3cbso7463065e9.3 for ; Thu, 30 Apr 2026 05:54:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777553639; x=1778158439; 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=ae2sGx+ag5Tw9HevwoQKAokRxB+3kxP91mZ1Vz184bA=; b=SEIWopPejOx/o59hiw9zfAteN1HNqCiq+qV6t78uth7Txwk/uvJ4Q+oqHml99Hj5a7 BbHsAFdpUQ+8RlXud5xuSs6uhZpg4poJc1Pj9hbreI3OGGLqyFs8KS+bgmJR36/Ulo5J GQcHC0rkX3waGXzKPf4uEHwbV1kjSw8uRUEBPnnvVyzxFzvef08q0bsnB6kE9qTV1LaK uQWPOhCNej+I7BtUJVp0oeDwH/KlFemdZtmLzbQTZ+b7CoBIOHodPHJvfLamek2kXByq f5k8q7OaaKJeAoOT8pACURekPvA8DyTrDv7MOYLKewWaIocalP/xBHinRPMqq6uTcm2Z De3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777553639; x=1778158439; 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=ae2sGx+ag5Tw9HevwoQKAokRxB+3kxP91mZ1Vz184bA=; b=KG1+Bg5OzzhWimeBq61HW21fxTEov9wFc6F3as9gmrJfWA4L0kSawPsOW0BcOb6OH5 t/7HCkMvVkgkyY2uapn4LVpO/HqFVEDOZOxoFaM1qH2NUmv0zlUc3dBBj9yjAew32N+g s0FQlF842m31mhgU/iaLdhRtpcLHc40jTf5k/IDMhDRxWqT5sLvPUs8N69imM186xCw6 Kod/E51vVTJQ9gWFKwUh0aJgEVE7S3YuuqTkSNJbtdd2ud4CcikItHtSHD83L2IAmekW LOAkcglKSULBZI7zjkoUGYHtmErNWWwxurq/uga9gAMcZAV7AFFhPkXA7tuqghr1E7L7 yd9w== X-Forwarded-Encrypted: i=1; AFNElJ8b2pdia5LNcUD4VblMzRbTjNkLocNKXHpc/fCdvrULU570RpmBZ6LV71CAI2iE9QzN9IqjMeVn9jgNRPU=@vger.kernel.org X-Gm-Message-State: AOJu0YxDxGfuOHpMlsZuSwFZmHIWu8uUtYjhj4M+EeazIyPETH3QI02w PkJnegiuC3UvGxWUumTmnTxB9/nDo2Pd6J6kFovNYDI7SysfpWH5MNRUlSD9576BIDY3su5MdmD uojW/FmU= X-Gm-Gg: AeBDiet8LZr+g9HtpwaCca3nrDgg565aYPj6BjAGYc3usHnTHNOUNFa400WHgJSX1Sg K3pfebOnrl1uZQv5lKTZ4qp4f8MvGEHmgQvvMKZ5IKCFsNDwyJGMyx7Cc4KPtMaWesftI14LVjP FKZfHQDZ/pSAjLW7Zyo6ewNK1z/nmHhErKsB9J3Oyz7o/l8PTx8aVs/UvKFk9OvqK7mx/StT/fd qss5eGkUCqKoy1kuJ7UP8fgsvXKxV9ogYXuFXGTi7HytfltQS7idjpd8XzQhC5F10ujJmbFOBT8 P52FDJHcz8Tdg9jxtPKOSoJi3MCyMO3pjc8FivyToG7UGhTG66dft7ebkJnHgFLdpJy/4Fh79eJ 6GYNYLrcZvIT+VT6b67YzzJ5xdabMTf0iUXLQFVN07tTaoIld93o0+1DsQKqs+BTsqfo5GhsGZ2 rS2Q7cUW2fpgf7XfNdVn2up359 X-Received: by 2002:a05:600c:4fc8:b0:489:1ba8:5be9 with SMTP id 5b1f17b1804b1-48a84457a98mr47364015e9.29.1777553638716; Thu, 30 Apr 2026 05:53:58 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2ed1bf6d391sm8900499eec.6.2026.04.30.05.53.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Apr 2026 05:53:57 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Thu, 30 Apr 2026 09:53:23 -0300 Subject: [PATCH bpf-next v10 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-v10-11-cd302a31af16@suse.com> References: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@suse.com> In-Reply-To: <20260430-selftests-bpf_misconfig-v10-0-cd302a31af16@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=1777553600; l=2156; i=rbm@suse.com; h=from:subject:message-id; bh=/WLI+3txZprQ79s0dGyS6fODzXDjv4ern4WIbfN0S30=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QCAb6pv/obNOHZMhZ1ZDm+Ivl91Hb7zdkDOLdjsjGtiOVKWzQESTHQTB2DY0VepKMCmCpT9ihEv YIMmXBDTR5gQ= 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 0559742137e3..459008486b89 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