From nobody Wed Jun 17 01:42:11 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 E91A638F929 for ; Tue, 28 Apr 2026 23:45:22 +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=1777419925; cv=none; b=EzlVbBcgSLekyI8N+KGjzdbrLcIhxW/4fQUyV45m8h5b06AYNGYPlaT4DAAJQiiiX6Ik3VQeMocaHxCf+qW9WPTQhAJAxDVe3K5eaapWwBM4GO5AO88XpddXGvzqJHge7+4G3ByyJZdN9GAlz2hOpZUDGmwYltyqe+zYntOPBHc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777419925; c=relaxed/simple; bh=/jGlD16wwf+LKViAk9+60yGEYsvt20pYf1s5W49VBcc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=C4i3LvXJqAaDURU6/6Lbthni/5VrpVmWvSxNStyjFw7mVTHy/Wxl0ubrwKcfJo3QqasayeUcdlqdITtW76I+TqtvjAq626pCpRuAAQ399SgVg0OItmo+O7VItJdcz8spmoLtheBF4RYqqg3bjob24Jo3rXeQrJYiU0Exb+J9FgQ= 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=gkIIWA/u; 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="gkIIWA/u" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-488d2079582so140525155e9.2 for ; Tue, 28 Apr 2026 16:45:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777419921; x=1778024721; 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=gkIIWA/uYPP6SYeEH23GagW1QixS6UJkR3Sh3Sa/SCf6gNZjpnbbnRtUz+p3wY07Xi SHCYUyPTn2/ww4+7VBPY8/zkx0TGTy+fI86MFJHs0lh7chrarqNpRrCBUgyu9OvqWuV6 eRUK2FLvT8dCEA4C7W+nY9qTI5QzsBFDwiuneTOVir762wnNPUm7LhJeANVSFoO9ppwd JLjSa2QjkIfSLEiIIuHj6HXef0J+d9KjFfrJT8sr/eRslfiJ3t1IVQ+KqdHSjCNk8hOT vQYb3nKFhdVoN7wPN0MDQt5Oku5dTE/PZJ5yhgjkYwQLXLjFLigvQuCe+T8PPpGwzbFR N1Cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777419921; x=1778024721; 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=m56uxjLO1RYV3AG47d3A+CPtt65PNysos+xrbo935U9cE8fF1EpncUA4qXrbLEwe5R GlbLt+iGH5G249mDtXAe4InT8VJvNr+Yo1gmmxhcs9Wnn07KLtA+JQY0NrlfaEo0q2Ev zZtKUKrfka0fRu3h3VHJFXZPQ1NTB2ZL8Oeuw4tLjQAiuHrPe++fmTMrIP0PfwIJAgin krjkX1GAmMl8QR/9o8ecjs7vP5kEtgBIYbOloQng6CgyE88jyfvI32mNEbPdf4csOLbm /dIu5lwd3aR019aJ/puYwmZ5XfS6VSJXo7TyEDC3cyYHBSdQq6WDBK5UTTo094ECseGZ ZxUw== X-Forwarded-Encrypted: i=1; AFNElJ/IWPR2WuJ/S5uVi6oTrNm7EHP07GM/nKseBZGfllmDrepiVNGAsMS3IV4YfHApJqo1oVGG4s7zLq4AVSo=@vger.kernel.org X-Gm-Message-State: AOJu0Yw+ObL+ykb91IxrQQlMS+9vvdxzx/JMgIgOlEZXywPme2s6pNa2 iQ7Pq56OLHFer4bALLwr3Ypei3dqWeLrmP1F0dthEMi+hgTbrjgSR0QS1/UVe1zNQB8= X-Gm-Gg: AeBDiete3Txm/JLe+cb13o4Q99mgjUPynQdxrzNefK8ugR0D0CkJwyHGG1OVfFYWX6Z OVWJVz16OPsTGaetmfvy20lDruJGKLTj13j94xVZPeMJzbzH4RUS44z5wz1Lvhx3S8Zybx66QK5 TS6mATDn8p+P6hiwOViVe11F7Oe0ZZrU9zbqJ35BzpePxtByk/tkkn0Gop46skytDewrLp3SfWB tH0wcLR4FAGEmLs40CBeE6Az9un9YQRklO06qpvuL13VGVnUo/0LHqO/D5lHzDN6m/I/ZN5l0wZ 0yHXqPOyLAgFDe43+i6GAJA4NAnpAAA1LIuuAd1malGwD3G2o4b+RmIcliqfG6IHk9rzmNYATue mLfA5jXHkqlBq1FrnJ56pK7Fmc/DROyN7at7Qg51+immYu17yiGEct3LPw11Vzip3QkRWBrkHdG bpzbYmlVhRHsWJudPXYIUXSpFZ X-Received: by 2002:a05:600c:3411:b0:489:1ff5:edda with SMTP id 5b1f17b1804b1-48a7b83efe0mr13303665e9.6.1777419921476; Tue, 28 Apr 2026 16:45:21 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-573b6b7d1f5sm223312e0c.3.2026.04.28.16.45.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 16:45:20 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 28 Apr 2026 20:45:02 -0300 Subject: [PATCH bpf-next v8 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: <20260428-selftests-bpf_misconfig-v8-1-bf02cf97dbcb@suse.com> References: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@suse.com> In-Reply-To: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@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=1777419912; l=1573; i=rbm@suse.com; h=from:subject:message-id; bh=/jGlD16wwf+LKViAk9+60yGEYsvt20pYf1s5W49VBcc=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QOUqofUorymPrniGUFcpYDh+n1AzuQbx8/XteyEdSb9PLdBuMBvuuQOl1gRUMnkqlmHx/7pLMyS mend0pXhQvwE= 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 Wed Jun 17 01:42:11 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 9455E393DDA for ; Tue, 28 Apr 2026 23:45:27 +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=1777419929; cv=none; b=SKjd/QgVb+0QRa7Vuz46eqxncBv9Kamog+rTamTVLPKVNkNIWLYD+g2JK5UhDmhNNP26w1kL0NVtBXYIseyaJFfi+C2UrZ8JRgp/QuFbXXYy3h3xrsFFfxV8ocMUztKZw0/SP+Lj+mWVIVGD97PIPPs81Q7vPazvbKcF+QkGDhk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777419929; c=relaxed/simple; bh=GPft9EUuymX/ePLsx8D1NAl+xxMNBZzC0iSHAXYAKbI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=caC3D/+QoQXJ6ms4ssdYTQ64VCjdA1U9bKn8eP2o8a4Z9k0ahE3eKkv7XUeV6ppc4nN8nGGAZa7cEhZ8RFljyvNt9j1XWWPU/1eqskP+E0GsFuqcgGdUebqvaAmMEmN7L2eeAv+goXjlfHZ0882QW0D+B16FrOhyWnSYX0Di4ZA= 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=aSGM2rii; 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="aSGM2rii" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-4893940bb5eso64550565e9.3 for ; Tue, 28 Apr 2026 16:45:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777419926; x=1778024726; 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=GtYCp4rJQ2CdnwGIUcHG8UWOZSQ5VpjJC/jcAlis1wY=; b=aSGM2riiQPW3ChMEFl4lcCBOb1uMeJ9DpZKyRWB/Qwk60G8WkBXuRB/DCR5kJFKd5T PSjVTnzmglcEkCdGPz1O72UdU5+vYn9HUlQFWsGalojaRg3eQ04SS2CgMR6ZlhEx5c/R 6PHOo+MryevHHa+3lPQ2wPLOFyHdExWc3kXwJFBUMR5ZNr2Bt4T/r0bvK2H9TLg3+VAF 8cQWmWvsXpk6hsJdTuLjIJRJaa+DYXsJBOlPfxycnjlLEU2GTvVrtbykvIvJkXtoixts Z6tUR1+LtgjaUTTrMOzXEH9Cderrk8lXK4sXBixjetK1vKdkotfv9NcRWEya8v4Q4Cuj jTIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777419926; x=1778024726; 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=GtYCp4rJQ2CdnwGIUcHG8UWOZSQ5VpjJC/jcAlis1wY=; b=G0Ck/sA+BE7xSBEGHOM0OC7PEU6FgNtnJLi5RVPZOgUKA1jFY9qVflnShaIKF/lxJm qXSGK1XcVs79dSwszvSkouRJRGvu/cgY9Yg5CrHX1RsHSkHLs3qcvZMKUkVYnxx9fgbI rqKGP5Gk2939AdMaMdhaRUh93v1QX8BI1OZc50jNMWQcsSws4GdJybCRraiLuKbiL6Lb T9q3wpv2GcbkV9Qng7u5yynf4g44FWJ7rb4k24GH/rAJD685fnYUcTT9QdUfDFWfyvqi 0fVOsEduggR+i4fbDzDSM/rR//q8oMPT/vD0X+C3+qalzF36BzIzT9Nj+oh+pNfMiSh6 bc9A== X-Forwarded-Encrypted: i=1; AFNElJ8BXK74aPMuPQpDxicudNjJIxsyscMCR3nSezP5SPzeMEsxW//QPCR2M53PCAEHcDKbu0qE6YGkbCon+fg=@vger.kernel.org X-Gm-Message-State: AOJu0YwheIQi114BYiLHliqv1Dy74il5WQBovHw+jTmFEuAliB0Na8gj Mj8TTvdEOHsvllPYvK78QBq4NpSDHsWLBIJYgs4nWrayImbz/b2FNFJ1cYNu+Lvo7+Q= X-Gm-Gg: AeBDieuQEe8oGvzWZj8hjuCaMvs+O0zwp27wmKaF3D2lEJ11QVV0B2P1ikBnVrVLZQo 9qMPdVLC0kYg8iHJKX746Fd8h9kTPu4nE2EWp0aUBRMNfqI/gyaNmKTl5G0s/fklqel995TuAXJ Y804FBhx1Wc76b5KeAL7NX0o4gAiEbaflx8+DcKYlwQimxvjhVig+eHkR22GcWpx1+f0MdR6jmz Wh0w5TM+BG8gQvkypXOj0I2MYynJYR4NTYwc8p3ZOqZHW+j59twy6e5bqECdi5DmQR1fgkgeQ20 NYidmnj8nxiBNrYHwogL0w0wkGtgnEYSuwLXeFLOP9GVFi/ijtxEyCcufkHNb6PQv+xiXlNJGMm PIkev3XEqwXBhOV1v/4rtPCladZoIYx3XL3FyUHHDXMT1zh+rcpoVsJF47ckY6p82BmFxOjUUfd fGi0OaMS8nSklRDD1G9wLaix4b X-Received: by 2002:a05:600c:6304:b0:483:8062:b2f with SMTP id 5b1f17b1804b1-48a77ae04aamr79854575e9.6.1777419926057; Tue, 28 Apr 2026 16:45:26 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id ada2fe7eead31-62982135e26sm225938137.3.2026.04.28.16.45.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 16:45:25 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 28 Apr 2026 20:45:03 -0300 Subject: [PATCH bpf-next v8 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: <20260428-selftests-bpf_misconfig-v8-2-bf02cf97dbcb@suse.com> References: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@suse.com> In-Reply-To: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@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=1777419912; l=5258; i=rbm@suse.com; h=from:subject:message-id; bh=GPft9EUuymX/ePLsx8D1NAl+xxMNBZzC0iSHAXYAKbI=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QBh0V0v/XirpUaW7a5NSaeQFZb0bBC0Q55UNG58qrd0MeApRr3pt6OFEYcVcT9EYRkUjvrhb2qL z7+F/KpaTBAI= 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, there was no fallback and the build would fail unconditionally. When O=3D or KBUILD_OUTPUT points at a prepared kernel build directory (one containing Module.symvers), pass it through so kbuild can locate the correct build infrastructure. Note that module artifacts still land in the M=3D directory (test_kmods/); O=3D only controls where kbuild finds its bui= ld 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) is intentionally not treated as a kernel build directory to avoid passing an unrelated directory to kbuild. The parent bpf/Makefile resolves O=3D and KBUILD_OUTPUT to absolute paths before invoking the test_kmods sub-make so relative paths anchor to the user's invocation directory rather than the sub-make's CWD. Guard the clean target against a missing KDIR unconditionally. In permissive mode, also guard the all target and make the parent Makefile's cp step conditional so that a missing or unbuilt module does not abort the build. 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..dcba595b4b99 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) \ + 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) \ + 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) \ + M=3D$(TEST_KMOD_DIR) clean +endif --=20 2.54.0 From nobody Wed Jun 17 01:42:11 2026 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.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 18F8F39658A for ; Tue, 28 Apr 2026 23:45:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777419933; cv=none; b=a3gofh1/8CIMJzhEcOUPvCtXgI/0wfUqG7+K6xAzozTAIxRBPzvlEn790tlDpz395Q+oEVJuKk+xiLdL6ev5DYvTwjqk+p5UbpKVO/p7iHtwpaiPAaHXtYWQLBFklFSmQgV4gEmYidd9GB4WStKdDoYVkFRQQ60BiYZyo3r0eGU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777419933; c=relaxed/simple; bh=Z9QzhMA/nmBpTOn+59uKlh4SuEqVq1B7WEVOVvaB7s8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GVJqML7UpQVqzgBxaq1aPiIu/CsW1bkoaJhTB4ByUyjCIGbcSPG3cFmbpQ6ncN5K+r1bmjDb9K8sonLDTySQupbVvqgJxGOyUtsfqWqQl5B8IMEB0SkMdOdJSji3PPhZPGLDIv8ke4eyuApQOgmy21zGWV0ZWj4QP2X0yg8YnP0= 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=APfhSlBR; arc=none smtp.client-ip=209.85.221.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="APfhSlBR" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-43cfce3a195so6785378f8f.2 for ; Tue, 28 Apr 2026 16:45:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777419930; x=1778024730; 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=APfhSlBR/+LTNelfhDrC3wIJ1eZDMdDL8a2VvyJtqBRyiTxhjtJi0BsqCGDjG6vlsZ G+h16qRqywdfWRJPsInHArD9X7D+1weGAhcBeRyF96d/MKVcuVUOLf16uGh+9eyT7CKN tBINxKUXWDIujsXzz7+99ytl/YV0lDSTBhBAhaxJXQ5bIuZ3nJNc/e1XUIHRpk2I2vtV uwpmSJGQ+tuH1KjgUDOcxjPQK7DHdjWmRonQlhlbvrq00Ms2cmJV5CYaIdu4CTGfAcA/ VOis/USUjfX5NHkWl8hPGwhLl7wO/57BfYEmHncek2IoRJbeOHG7+SUDT2mC6mH1deTE EOiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777419930; x=1778024730; 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=ASN0dr2rpHcc2X9mhQzu44C5Ld/+FfagGLXwej4egrBJIarshR8GQtTP+lAtAm/lku MEnLHGNDEZhmJM2QvbqvOK4tNDBnKj9HAVKOJxSIMqTftzdczDngHCvrKDxxTGUOu/3p 1fhf87FeRIdspmoNBCngQrovE12Lu1+9Jut46HCasiPzYAfnZJQ3i0OxX4ybzOgZjG8R l9dW8alVYIUjY9faLJ3S65+d4TrMnRFbpLRUid6A58Qz9bsbD18y74phJdoQjFhvw2fl PioeG2UL9xBjneRSRA9U82ZXjYc5jykr8ali2fTTG4s6G0zchR0zQuz69W8AIseCb5Bn x7FA== X-Forwarded-Encrypted: i=1; AFNElJ+jysXOe7pr/ITANoLT4xnq1vIpOZSoeqz4o3vLKTVvedp98lBWex+4IXCQMBdTDISnLTyo2S71pbdOH10=@vger.kernel.org X-Gm-Message-State: AOJu0YyrkVdeDvYIcHvy3U4tLSh3MqOLIeDpf1tSQ5etjsg90vYlGEiV qMS4bvLsqjN8imRA46sVK6ngSppDf8RS27IFMeIpGOnVT8bmcTEaFBkp2hIMxwHuG4M= X-Gm-Gg: AeBDievt3VUYb27YOGDbEHRB0W2pZ27fl003/kYrZfpoz6aEfV1YTToUYxQo+VeRevk 9pS65v8FywyC0iLOHggPah+0BMKv7wufvTnVradNDCRxIlI0IWyB4mcgWGErgqg1qFqQPV7U8/0 hNUTUvWkaG1IV5RjB3plEchz1NcAZ9HwbKLtqTPB5usutVnN8mQAoXJW7Ts3UdohMz0b2uXB3y7 sol35nPNU0lAcr1rF5rj+UfOHoWkYX6tn2x3zfY8Jh4Yh0h2M1vuUhVwDi2w5UjvinKNi+It3jh 07EKXloikjeS/+B6AM8KOZ9Gk6vgJrSyiFmlBXJe/GGso5dVhvjnMGwU4kGM941IJHFAg9MhfJO H8USRed6lCOObyPQdQjHg+t/xKHSqtVv/1ACgFwavQWeLkANwRjWu262mOMWNuy6Vuw6EmQjdln f00cGufvKr0N7vz2ENF9YCNwzS X-Received: by 2002:a05:6000:601:b0:43d:762e:76c6 with SMTP id ffacd0b85a97d-4464761bf17mr9173550f8f.7.1777419930560; Tue, 28 Apr 2026 16:45:30 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-95cb7765acasm135039241.8.2026.04.28.16.45.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 16:45:28 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 28 Apr 2026 20:45:04 -0300 Subject: [PATCH bpf-next v8 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: <20260428-selftests-bpf_misconfig-v8-3-bf02cf97dbcb@suse.com> References: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@suse.com> In-Reply-To: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@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=1777419912; l=9623; i=rbm@suse.com; h=from:subject:message-id; bh=Z9QzhMA/nmBpTOn+59uKlh4SuEqVq1B7WEVOVvaB7s8=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QK8E1hzoXcYLv+H324mxbEeBmUpQAGC59DHE0X/GGbyDaKcpXSzPvn+oncjfDg8TPiJaQrfkFJ7 8Pn7V/wNjvwE= 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 Wed Jun 17 01:42:11 2026 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (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 072DFA59 for ; Tue, 28 Apr 2026 23:45:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777419936; cv=none; b=M0k8YMpm6gh7f3bmQjq6D4Zh0Tk8+3q37xgJFBRn7zklP/wpvBn7dKliJohaGfBFVYZ3HHzUNLqcdScu5s51xhhPieMO+c7Z2c62RaTc3ilvtS8vfl+gBSo5fdugkW/Or8JbxoeP9QTGnXxIBJzJ5HePZ6dO9m2ulwNsQ6LJ/BA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777419936; c=relaxed/simple; bh=pbpwT1aTnlvs/k4VWEJw+b4cingvftFSwGWkwuBMoWA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gI8ymzeanMAXugoLNps4PlOFKYEfJ0i/gAZYmLynEg6n5sq8VlmFBE8zNEHWLIWCiPLL+37REAIstpesWT5zkjQFn0FWdk7tyTsuFX+DX+HMJrVPJv6PNGdQzSjohIWyFLMZJKg549Iedzw3C3ZCOYMVyVpREJK7JF8vdDCMri4= 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=K7XEhlQA; arc=none smtp.client-ip=209.85.128.52 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="K7XEhlQA" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-4891e5b9c1fso103957675e9.2 for ; Tue, 28 Apr 2026 16:45:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777419933; x=1778024733; 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=K7XEhlQADJDvOMKZSclwFRMmJGc4YQ3uqT0g4F8Dxi2NWx/yWOyFyA1GmRkd7beP4W BwKBS42GfdVwIj3+ucPfU8GIdXmnf5xS2D3hYd70s9mK4bPyX2/hDuGF3TM4HaDUl/K0 6sC7xuNlX9ZZzyE4DLyAHaGijNYUbnkCCWAUG34oNSG7sV2de0bAhYr4/FpLeOge6sSk +tDzblQJ1RnZyjw2BagW/eqJF14S+x7+HPrKPho+UF+vpQjXuguddglgx2UePHkHb687 8LwEXVDMyYupbinQYWJmEmNvxnliw4OxX2jyX1DHreit43yBzsBmc8buqMtRGO3W3stm ckZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777419933; x=1778024733; 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=qAZqqAMyMND059OGMUdmfw3MCGrKBCmWprImLrMXq9F4M6dJ2hxSjpxUUsoEQq0Cim 7/AaKmLT6EaFA5aSRdLV8oGDtx9GvVQ5WWk1ad+6odwG+HSouulc8R5HxX/iB/MZeUgU kMZ8p/0l3bBEv6GtemqN4SKjLSSD8j2c6RTFSUg5/CnbN3VxMkS7j6zl9YmgakituiUk AQYwXaC9PBJaeLICMkspCENtVYsm2rdxiAhI83n8UkMLeZPV4mhXU3MwScllvQGkeQbv mCVMMxc50gYSTr68AE9hpNeraPyz6Q3lGeIDe/9pl4PwB7ukX2gVt8QtuXyo2TNdaMhN 3Kug== X-Forwarded-Encrypted: i=1; AFNElJ8HrClMxBsSzx+LkXl7+u4j1v+apXcdKLf+nlZQfUNSomObRdW5N7Ufm6D0hYLxhkBGsP9x9zZyD7ZoGTs=@vger.kernel.org X-Gm-Message-State: AOJu0YxKRMhxgwQedlkB2V4/nqazrpLFL8hG/BinNsplMybsB7k8yQzf wzol9h6ySfntGeyh65APF6K43XjigsgNwnGpDgPAkDkC9JZz9qSYIKSLrdUqEVXBwVs= X-Gm-Gg: AeBDieu9zfad0e7aRLVajmKNd0+UOFz9GujzQH85Exs4CD2sZT+qdaoZPR43787qO+f zZTIknwu/tN54PUdnsHAmzxYOghsDswQP4PEKRGJQUSWzG0N+/0Lo7iEh/NTZhdvFOtcCovnwqJ 8OQPFG9xYCocextvnIbLDbpizZnRPkCV7v66l0i0D0cGTVvqV0Q/OAWETBMOipkRNsCD/TrHxtQ qg2L0FYAp3QaM6u7sZNgSJ0Nx+LsQ7BSOrIhViZGt/KmH/8RjM3UTNNCecwnD1ikhk6QxYubs3F ofsjEYDUacjv+pV71mq1u5c02mPxGf9gdAx4/Fuh4K5WHhYfmLpUcABnt0ijaDzK9RLPnB20yEq 9kmvYs7eOepUCVbxj+DmI9sV1ml/7mW3fgjHHN27ci3yZ4zd+5afaAHaGsivz13F4/6aEHaIdn/ QW21JH5bbXfoSCbvD2BgBbQixt X-Received: by 2002:a05:600c:4713:b0:488:ffb1:494c with SMTP id 5b1f17b1804b1-48a77aed429mr80989345e9.12.1777419933461; Tue, 28 Apr 2026 16:45:33 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id ada2fe7eead31-629843365e9sm214210137.7.2026.04.28.16.45.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 16:45:32 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 28 Apr 2026 20:45:05 -0300 Subject: [PATCH bpf-next v8 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: <20260428-selftests-bpf_misconfig-v8-4-bf02cf97dbcb@suse.com> References: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@suse.com> In-Reply-To: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@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=1777419912; l=1555; i=rbm@suse.com; h=from:subject:message-id; bh=pbpwT1aTnlvs/k4VWEJw+b4cingvftFSwGWkwuBMoWA=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QCxcEN5y899hg/gBfdfhM/iJ0taCQUUzGVXJ6akhKBwDcjQYo5+ftQKPAvExHbXI1hqz3Rykm14 5VkDKVo5YMA8= 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 Wed Jun 17 01:42:11 2026 Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9D3E239D6C5 for ; Tue, 28 Apr 2026 23:45:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777419941; cv=none; b=hJ2WxnnXiLjG+w+WT04xAkmlJuyQcH6FydIP+MriDdUKPzCyZxX4SSIrn+RqIlaNKIkaizQML/JRaLLb9I45Bi48vrYT61iyyFqnJVs2N+NIEbrWdfOOHluDqKy+BHg7Tb1sDvPJv7PIVorBdTXIu4qp3rYYNw6JwPzQlJT2S+o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777419941; c=relaxed/simple; bh=95satU9q5Agv8MCheK9ldPmy80aoR7ITuWu90cxm+F4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=igYoskPnf4Q7dtsRYBCkiWHiDzSpXqtxK3GE3EqfDRZ/U17fChBKkDZWpP7lZKQBQSro8KbHsjK+zH6xnL7br2EatrHhvbVefO8mnVWCym1ximUV43gmi1XVxRZSeQckjk/GV2LidVlzirH1vBXwL8L4ARjTBCNVmXgzpJnXG7Y= 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=K9/qlE5h; arc=none smtp.client-ip=209.85.128.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="K9/qlE5h" Received: by mail-wm1-f49.google.com with SMTP id 5b1f17b1804b1-488e1a8ac40so146588535e9.2 for ; Tue, 28 Apr 2026 16:45:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777419938; x=1778024738; 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=PCFQo4Aru/JTwsEjOuajhbqjGOTLFNs9niLacwe8mnA=; b=K9/qlE5hGgkGuEZxJBdUE4N99tBYDcQ+JHa7qtCAVggP45Ok7MTSFhqN+WWDgZqC0X R61B6YvctRytVRiRc9VllQZ9u+f3PKpDyJXCk9nSEBY38Pm2paNHWotdrH/Uf1AclZ3C eKLeakwQvDeTgqLO/ODIxw/Rr4E+YBHn5WxAkN7EDv+ZR3cfsfR6krjDv24aAQ954FNi zno1jHr8Mfju1piLzgRJyIlnBQGkTs2w0C4rbbfu9aXYzBlQ50t5eeJNWOXZysRb44cm AkffyRH0KQb1r7Llg4l+Kr5ARqXq3sSXnnbPLi0vnNOnswR0QJlSzt0SNWXILNC2/erx lDxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777419938; x=1778024738; 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=PCFQo4Aru/JTwsEjOuajhbqjGOTLFNs9niLacwe8mnA=; b=Rcci3PtTGe3zG4pGNEvIXllXIcdR/YEOTxEMNyp7Y+WbhVvwW/dJV2wHQ2gbPlLKpt 7cWZQpYz5PD3tLEvvZPoKQo8viji2R7M92HXrJYRkGoXi2q3uSXmSEIvvBhP5XlV0Ar1 7ENSCEYL2Pgt7BnLCltJW97JcS/TVc9BkD8R70pBCRqcMA1lOxGMZfyDMWT0L2/ir9na mHhYUw/a6mKqPnV0UkDLZ1a8YQeoUvqGaJJa9j+gpY0vX1iYrgnyr/c3HJcDFXUrLHWE 6YAI75//7L/Ri+LLATWFGjvbp1k9Lyolxji/D733AgfXYa7lKc8KI8TVwoPaz7jBjVL0 9VBw== X-Forwarded-Encrypted: i=1; AFNElJ+W56DFrSfcs5mSzksM0N0i6InrTP+3e70+M/NiXic7MreRZRCfnTzlunhoqg8i4yiIyy3C20YmG4V4sgg=@vger.kernel.org X-Gm-Message-State: AOJu0YzUPNVlhVxRN8E1Vu9SJ16Oj5xfN8dTHP6/C6pKRWQ4KlrApg9S CRxlKqufuu2w7LH1/+B2d0ye4BVLyFaz0O9MRoGspwNu5ifMC8ON/eheRS6j5Lfcpmg= X-Gm-Gg: AeBDievfRrAVJRYZ1vMopTDNWdfDWj0sGAK5hJhjesvEy0Agf3Yoc6dVOE6w10SeliM JTJc/8SzrkPZKlvApq3luuZKPFMg1yAwWBpUh8neH/ZINdAEC63E+b2muSvmEhI1SWedPT4EzN6 yXAH4o9MxxCcQgPZMeQRT4YlBAQrYY+Ns7tKbaeCsBnoiH5e7Tmtwe9gCA8hgvNtkkFo9bwjwQX b6GQj1ead7YrMd1xf2dqXSourMk+h0k5EmwnU1eDkVxdgmG88+JkL3sZb4bzNiRzlDXMX1PzI2I Y5xvK40KA/H2qKXeEBYsRs6gHhse4md2VwzTb2B4iEeYRJTKRuFGgAxyag5ZUEZqNiZwrrgGUya uiNvokCBszaATXszHnGpwbv+uRXvrDjq6cMc51yTnRfuq/+vxHqhrb61/bbObmmPDNQ/qSOEApW XTGHjdGwee72GPmAaKcvoekBip X-Received: by 2002:a05:600c:5494:b0:488:ffad:6728 with SMTP id 5b1f17b1804b1-48a77b05c77mr86131225e9.19.1777419938146; Tue, 28 Apr 2026 16:45:38 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-95cb7765acasm135209241.8.2026.04.28.16.45.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 16:45:37 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 28 Apr 2026 20:45:06 -0300 Subject: [PATCH bpf-next v8 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: <20260428-selftests-bpf_misconfig-v8-5-bf02cf97dbcb@suse.com> References: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@suse.com> In-Reply-To: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@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=1777419912; l=2200; i=rbm@suse.com; h=from:subject:message-id; bh=95satU9q5Agv8MCheK9ldPmy80aoR7ITuWu90cxm+F4=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QD+jepyNJMWD40lOW5GvIdeaEl5O4OF/51LYPAKc8TQEKsNlSTvnUZVCp681bxFrGne7JnKymWr Z4n/nlSmKBwQ= 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. Make skeletons and BPFOBJ order-only prerequisites of .test.d so that a missing or skipped skeleton does not prevent .test.d generation, and regenerating a skeleton or rebuilding libbpf.a 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. 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 Wed Jun 17 01:42:11 2026 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6BFFB39D6F0 for ; Tue, 28 Apr 2026 23:45:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777419946; cv=none; b=R5/5L98kI46iFI2WRnjqXa5Emd8xq1SDXteqyIm9m5SMmQw78vlNut1mxPImbng97j+aZAxQLBo4rAPUlxjgQerVaRFxjRUYIX+Ua7y2QX5GU1tNHj6suRXGTEv3PkRA5x2iO/v+lDhrQ41K9sVgrS6jwHPSLd4WDeJ7jzLefBQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777419946; c=relaxed/simple; bh=L9HuTY0g8gIAf5yOwBttXUIxYT88+W0S1PATCxy+7ig=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=l0MPG7c/pVLFsVEOvXdEw144AQtP8PfIZNOHFL9rrN4Haj99npagwUrn45q8FmkHW4WbjD+lWKRmYix+UWNrlgo87jiAXPbhry81nxgLxQ1SirbAQgwpHvQT5wbMQ96B4WNA6A0D+lp0yCDfgBsNI1wFDBvZh1EMqd1dbxEDoK8= 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=cStilqlg; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="cStilqlg" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-488a9033b2cso125530475e9.2 for ; Tue, 28 Apr 2026 16:45:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777419943; x=1778024743; 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=NiBkOsP3D37NyL+KOe67WxRClt62TKa7PSBgpnWneMk=; b=cStilqlgUK+LQKPN2ofjIXLwoVL6oWxgMBYA5ymzztaio6qtaAlx1OQ1ubxCUr30hL zhnZbIeTvl3puG6YnP+eRCG3otbw9bff8DuGyk1atuwFX3EUx8VlZRXcKNYQ7bjr2cs+ ThpH+4vMFRB5OJ84l62lEvzUloJSp5rhYgGzyA9OhzYEHEECGvDwl7eHIf1zSqazG8Je YIrWxaYlNbOrlY2mjXwJ6R26pMtnifb4SZeSdtnY7fXHrHnJBzpgdt9vI4IeFdelGg0h mNtD/sV5C/hoA+xYQcwlaDnGvHgjyz9rUN9FbWLniN71DXXzpILdmVXc08HAak8o9Z0l mPXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777419943; x=1778024743; 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=NiBkOsP3D37NyL+KOe67WxRClt62TKa7PSBgpnWneMk=; b=ZzR38rZqtXkO3PMV0CzzfDfe13TIS1gL+n6YeeVFTxUjwko8GwNBpnQHYT6yUYI0f+ jlRinihiZyHB+DCQXa8+sU8wlMQzx8r98QejK/aqFHlKoku+KiS1pl7TSDlk2QsJJskZ mkgPdiW0ySK4wZraizZ1B5GxitLfRLg0ayBjgKMLyHfH08kz8cpyC3iQcbfPfVNnq5qO ZzV+VHEKcbtdlVvrlk9aBbho0hTfaW+6apwj64OxuKeWcHuwhQNc7lWMxlTmo0OA9XaR uXLjy7z5AW6QmZLNDAReY0Hhu+wDb2YcTZqO91R6FbaypGFAflM323SkjOYiNCDKVsR8 0cvw== X-Forwarded-Encrypted: i=1; AFNElJ/meuSDJK9vVXa+y191dtwBoFZ3sn8gLAdzWf8hYx6RhxZacmxSStnvA2ZwyuMIxRLOgHOeiaKcwxjL+k8=@vger.kernel.org X-Gm-Message-State: AOJu0Yxc2w4joww1z9OPf55yrj2RWr73N0xG+72BQ9sEvKoa9j6hz3f2 rjuqMzI6gDWwcj4nOhNrEIWhXW+BtZQ5VDliGAphg4d18qi7TFH8EHGpHzcBlDmec5A= X-Gm-Gg: AeBDiesjOD41vIGnDwzMy27+c19hbo62Vrx0LA06p7fqNl9T86z8C1UrWa2Etbcftfo 2zLtSc1Z4+UAKrxdZ/bCe/Af4urBF6pz7IN6ZH1L7YxIAFhCU4wBVdcxAjVntsqJLKMFPCTqsnT tAcJ7gI8uMUx0k1u6IEM9lX4ClQunBv5xLQT+aAZJe8ia3mzEjGjcgo2oAaKF3B/12893WY2n1Y jG3WXRhug7K/+T6mnaEEp4Jgbi+c5u4nZNCx8+z9kYeD03vDGM+Je03342cP3GZB8TyNg43KC6Q J8ycL+2QHTxg18F5y59fISwhFL+5jCzcJ+LiYqqgWaePKZxmPBT+zioVMs8UfdCKXXpFKriiVSK ALBhWb1jk6B+SP4rNmp1205w/uvz/19Yij51vrhu4DIZbCojogw5/zzLx13+j3X5TCyf4AWbpQC q52Makvct6MLYZdm3Pv6hU6wrM X-Received: by 2002:a05:600c:1382:b0:488:b99b:4177 with SMTP id 5b1f17b1804b1-48a77b232femr77940045e9.25.1777419942911; Tue, 28 Apr 2026 16:45:42 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-573b6bbace7sm247108e0c.5.2026.04.28.16.45.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 16:45:41 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 28 Apr 2026 20:45:07 -0300 Subject: [PATCH bpf-next v8 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: <20260428-selftests-bpf_misconfig-v8-6-bf02cf97dbcb@suse.com> References: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@suse.com> In-Reply-To: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@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=1777419912; l=2530; i=rbm@suse.com; h=from:subject:message-id; bh=L9HuTY0g8gIAf5yOwBttXUIxYT88+W0S1PATCxy+7ig=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QKrl4FW9lTL2fKXCoxAttbRH4v2StF8TjG5J7aB7amC9XyO8MvqrLBBGkS6a2KmtCFalKLmK1Rd b52LNnLz0Lgo= 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 in permissive mode: 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. Use plain printf and $(Q) instead of $(call msg,...) in the BTFIDS block: the msg macro expands to @printf, which is a make-recipe construct and is invalid as a shell command inside an if-then-fi body; $(Q) restores echo suppression at the recipe level where it is meaningful. Note on bisectability: this change is gated entirely behind PERMISSIVE, so default builds (BPF_STRICT_BUILD!=3D0) compile and run identically at every commit. In PERMISSIVE mode, this commit alone is incomplete: the linker still rejects missing objects and the runtime still aborts on NULL function pointers; those issues are addressed by the two commits that follow in this series. Signed-off-by: Ricardo B. Marli=C3=A8re Tested-by: Alan Maguire --- tools/testing/selftests/bpf/Makefile | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests= /bpf/Makefile index 608e6dff0392..f0545ee6b32a 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -717,11 +717,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)/$$< $$(L= DLIBS) -o $$(@F) $(if $(PERMISSIVE),|| \ + ($(RM) $$(@F); printf ' %-12s %s\n' 'SKIP-TEST' '$$(notdir $$@)' 1>&2)) $$(if $$(TEST_NEEDS_BTFIDS), \ - $$(call msg,BTFIDS,$(TRUNNER_BINARY),$$@) \ + $(Q)if [ -f $$@ ]; then \ + 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 Wed Jun 17 01:42:11 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (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 1D2BB39D6E4 for ; Tue, 28 Apr 2026 23:45:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777419949; cv=none; b=rAz4HlhZxqrWWbf4q24P0G/sGmSxt/rgMEgtBR8Km/2FApAbQvk5vK6s6k822gISF58MXilm+fqgyipwsOvtCVFtcbLxZ9ozSzLVs2kU1EE/3X60yk5Zo9SSiPu8SAzHqpRwamvAFlyEt50A71sSMNB4LNVFOeRuwwBHha6UbS8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777419949; c=relaxed/simple; bh=M6OJfT3qSdP4lnrHz8anqee8kUQRnD0Hidbc1/0+8Oc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VLBfzIoDQG9ZSMZvuu1HgUrND5b9Q0sPl6TNRU83r4OtsV6PTr1RYyce4OASw28EjZ5jnyiA10/0mcQQPPgWhz0YYq3KkwJObny5ozeaZZCOUkMgYXnjostZhin4HmCa6IiF9NmSIi/jXrqu0B0RsWdJbqNuw/bljIUWJ/EFg+8= 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=Q1q6gSE/; arc=none smtp.client-ip=209.85.128.54 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="Q1q6gSE/" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-4891b0786beso86583115e9.1 for ; Tue, 28 Apr 2026 16:45:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777419946; x=1778024746; 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=Q1q6gSE/yOB9uZkLeFW3arVCZ+xW55fDpp2tUcBds91phrNsMTj90wfQh4psEpR/rR wznLeD7oC9JyesXkvz+rYNTuh12uXcVShi9Il0PM1sHsuZAAudZauM/a+rtIxxxMPMEd EwCOCI7iec6OKZtimTH1Ke5Huc6KcCKChJUvXqxkJxOl0ngC9jtablCWwyQOVEJZI5Sl LTv4cJZA9GxS2rhbplJiNvo2dJt0pcNzETUbZ4rvLfPn7SPf0fFGb1bmIDK0yILTdrqj pNgvbKFXWPR4ZxYA8DtN6Ta6a/ZyiZBZ3t6l9McxdDu990CvV8xxYAPMczWNLrvuGJY4 Dp6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777419946; x=1778024746; 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=OB5mu2a/pgCIVL/D16g34QqjBBdt0Qmo/R8LGzTOzO6mFtTXEmuAQ5KOSj7RjeKg/o NKHNuL4xZPNJwgnOhWAr69vqftyEdpmUebVe4ujccgk1P3QGPP3HJzBxnJ8hMc56Gywr Ox0DoHgGB8+XEPtvFQXcsIrPgTsAfr59Qtf52pTxxeHXR07PS2c7MwWLRH19TVvq11OI /veevpZfFDrrZt0s+ahzcBJFBn6PuHnUxxgWd089p1uj3CWq3I8hrBwDtz/bIK8DtFun HBEAIHH7y+e0fxnx3j0ITpl2Qo+Cuz/oJzyzyvk4a5Q95DEdfPYNw6EzVGIj7Y9/xno3 l4+w== X-Forwarded-Encrypted: i=1; AFNElJ/dntujR6ykv2278PCYsaBrhfuwNHWmYQrDBzwWu6dpRooK3E3lN+J+Q+CPMyqo9TSlCLFla/baFqk51Bg=@vger.kernel.org X-Gm-Message-State: AOJu0YyiFsMpigde0A7N6RNNrQ42U3E3fy6aN2qGhMvVnR8O+QuP4vnX 7b4gjSglPecPynVkDQPFYne41r9kFT1ZiU/O+A0cDcTLJRvP1NIP16KfCfCLGQ9qv2c= X-Gm-Gg: AeBDievc4vaj/E3zBCX/y2f5nXQMxyAn8OPhuFiD3l99YOiGA8FPYCydEROemA30B8A +bvso2z0SpCyycLXcPz5rCZZEuiz0TYTiuolc4DW0Qm/9RGTdjMTGuc0oCmoIY4yVqj/r0h8SKn DbMjvJAHq7rjrTMBpTXa4tyseBG/SX9dnwNtVwvSvI94S9av9UHYu7qg1AjKAD+qdyRVXU1WfRy LwcKM85zncB2Jt92oG2u6rpVey5g4BJKY1OxCqGfdqKtlgvvgaAZ9GGnhdf8RZeVIUV2QTCtpaU SHRg+8Vgf7VB4qcc55FXxCVB+McwFKorRUerfk4u3woNXPV5hQsmBxLqm4QA73Kh6RGbc1XFcpu bWPMxzye2tw4S/h2sOnYKfYbDgDbrdpIBi2TKnw2rrilqAS9RAmjuOBksb0VYbZorMY84iQzrlx e/EZq68xwQJkWgWK1N5di2B73X X-Received: by 2002:a05:600c:138e:b0:488:c014:34da with SMTP id 5b1f17b1804b1-48a7b549000mr27416645e9.26.1777419946495; Tue, 28 Apr 2026 16:45:46 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id ada2fe7eead31-6297f4e2345sm240138137.0.2026.04.28.16.45.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 16:45:45 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 28 Apr 2026 20:45:08 -0300 Subject: [PATCH bpf-next v8 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: <20260428-selftests-bpf_misconfig-v8-7-bf02cf97dbcb@suse.com> References: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@suse.com> In-Reply-To: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@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=1777419912; l=5462; i=rbm@suse.com; h=from:subject:message-id; bh=M6OJfT3qSdP4lnrHz8anqee8kUQRnD0Hidbc1/0+8Oc=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QI/vJASeufP/GKj/nGjA7NK3YrtbiPXcNZjGrVzqGLi3qIuwk2Ice1ZXUoucXS4Y60laEqLz2DX 7NMQAnH274gs= 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 Wed Jun 17 01:42:11 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (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 DC6D139EF11 for ; Tue, 28 Apr 2026 23:45:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777419953; cv=none; b=QQDZ5RCyL3LKs87ndukfLvluPOFOwv1hPiXJ70W0u6cNwPA0Fzl21G8BUJwA4X0jyDjKb7l1J796MunFoIzBZYWmCZgi9dOZhOrX6eSiB19eQPVtxPFXpNYaIxL6cz9QQzm+e+e4mJfXYrOr1aR7ApYNJUOK4SwAwUIY3wdOFNg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777419953; c=relaxed/simple; bh=bp6nwxzrFREUgn01pCEsReac6kfcDYuXiYr9ESZXpIc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gkVX5PGDXq3kShjWsEcfkN76GBqC/6JpyF0yColwRmLBdLKWvLd7cvRjfbn5zGXAIk+sOVZmzuYKoWPH20+0h2unhMdwjmFaJ3M0uHDd1GUszrIhnmwZ3LeA9dqD+5O/J1Yrabh7nymp/axLsdm+FVEtFlWc1ZXyyLnC/4cwdrg= 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=DJ10wR5y; arc=none smtp.client-ip=209.85.128.54 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="DJ10wR5y" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-48334ee0aeaso123492535e9.1 for ; Tue, 28 Apr 2026 16:45:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777419950; x=1778024750; 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=6hdu595jYeB1D4K1cw+a/FSX5Nhp2ZnO92G/7aUFiPw=; b=DJ10wR5yT1PwTWCFYOwseh7crUIJ38vKaGLIi1g2W+5CSnE3FtZfEfk7p0KIf2SQSk 9VXfdLyD3dgifX/YhmrH5hcEO5AEKxUPCexxx48YEmia+ExBkn+yA8TcNG9OMNsTbpGV cA+Fj++xhwZHjoIgPB6yq9siHtgtiWNqiETX4PI9dM2U9xbFADsi4JWfQt3SLJ+N8ie1 ToIWM2/B2qWeOZqBVcCF8JHewmn/Hs//0qb6/8ixJOeONjaJzmvVzMEuxb8VeKTsFhwM k0dQlXavw5/OIQ4cK4uSEVr4bOR+hGdak2/9XPAa5IyI6wkAdiCWcF1M6aBhipE03FBL taOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777419950; x=1778024750; 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=6hdu595jYeB1D4K1cw+a/FSX5Nhp2ZnO92G/7aUFiPw=; b=WY2APmb+XuF/h77kV+3uJ7QISuNDorA3+dwrqPdxp3BhQ7vJNzO1ncga1bunAfZ6sx KziK6MMBrk9oYucLpQPfNBsFfOfR7z23Y0YXVteh2OZmaAuQf0PcTur8Xka0jrtBth4G twqwnzk+u6cxeIdXz3HisyiXa9KZRAb/bbQZBv5F6hWOcnEPdYqGmKuDkJt3+6gJLfqI 8vDCVuga0stsQdA8pwEk2nZHjLqdX8mtPAsifZj4NM67aA2iy+KpL1BSTuzjHg9GSAYP eojqqE/nYOLYDR2DDeobU14WFXcnVFlPpejF8JIpaBMlh+WDl1FrTtYWhGk12+l576Ut 9GEQ== X-Forwarded-Encrypted: i=1; AFNElJ9aY8FFWFpo6Jb8SK9XrGOESnyL/fOxKPWa4Mw3TdakFFPKYyhTwfMsWzAm8bQ26RnCpEixdXQybn+AEfc=@vger.kernel.org X-Gm-Message-State: AOJu0YyO+glfVCvbaQ4l0bJDcEnvvKXo0cKDORrfUCbmBU8m1wwpbaKq puKBvGJcNGQKq9GQWtu6Q4yWj7ZVr9zVXTU9ZqGtuxudW9Lsc9pNNwdiRbVJFBergnE= X-Gm-Gg: AeBDieupc90JBAkHNiE4D5EjHP3zRhcEvryMsMezV+fEn35DJYlMqTighSzvxACfoDE 4hgzLq/77o7wwLMuGhpG2MOC6JIhQ2vcKzvzkbDLWi6oKQBsc+68c4vMKroNt6wZq2ZILlWO1xk 7ennVP/5yPoZmGVtu+YiZk2gKA6eZPtwIp1YxvHa72Q/eQzfsUIwONBbCfvGbECN01WzuHmI1l2 I3ykgugebdtdOYpeNaZoiNdBVTgJIn2+zNTa4OSvM4XJho/eL46QRVHfmz9+rC/NKx9n6jf0dWs rDxP5dqHJ7O/sR0Vpn6fTI99QEAX+fkJPzLS41FmfoRQz/nTK7tFA+6/hzigT+7G06bJFAcdEBR CqWm2aSEdY5ZhC8LWQ9/Qvd5SC9BKzqazWgUpbF3uvolqqv8VkYQwy+hjBQUjwqwo2yolA/rWhT 4WLHGHtKZuWDIMwPm5kEQ8bLh8zX32H6/1A8k= X-Received: by 2002:a05:600c:828c:b0:489:1ca2:eafd with SMTP id 5b1f17b1804b1-48a7b51bcf7mr25090455e9.11.1777419950411; Tue, 28 Apr 2026 16:45:50 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-95cb7831df4sm131316241.12.2026.04.28.16.45.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 16:45:48 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 28 Apr 2026 20:45:09 -0300 Subject: [PATCH bpf-next v8 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: <20260428-selftests-bpf_misconfig-v8-8-bf02cf97dbcb@suse.com> References: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@suse.com> In-Reply-To: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@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=1777419912; l=3164; i=rbm@suse.com; h=from:subject:message-id; bh=bp6nwxzrFREUgn01pCEsReac6kfcDYuXiYr9ESZXpIc=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QI0hxMH5mboGWDH9N3nD/FcQJitJcEB3D5vN43cKT82ONg6T2bIh0WA3f2tOXEcc0QmwtCIFLlr kbZw83cM8Bwo= 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. 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 f0545ee6b32a..9a5177455f0a 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -767,14 +767,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 $(PERMISSIVE),$$(wildcard $(TRUNNER_TEST= _OBJS)),$(TRUNNER_TEST_OBJS)) \ $(TRUNNER_EXTRA_OBJS) $$(BPFOBJ) \ $(TRUNNER_LIB_OBJS) \ $(TRUNNER_BPFTOOL) \ $(OUTPUT)/veristat \ - | $(TRUNNER_BINARY)-extras + | $(TRUNNER_BINARY)-extras \ + $(if $(PERMISSIVE),$(TRUNNER_TEST_OBJS)) $$(call msg,BINARY,,$$@) - $(Q)$$(CC) $$(CFLAGS) $$(filter %.a %.o,$$^) $$(LDLIBS) $$(LLVM_LDLIBS) $= $(LDFLAGS) $$(LLVM_LDFLAGS) -o $$@ + $(Q)$$(CC) $$(CFLAGS) $(if $(PERMISSIVE),$$(filter %.a %.o,$$(wildcard $(= TRUNNER_TEST_OBJS)) $$(filter-out $(TRUNNER_TEST_OBJS),$$^)),$$(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 Wed Jun 17 01:42:11 2026 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7DC3E39B977 for ; Tue, 28 Apr 2026 23:45:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777419958; cv=none; b=XwZ4L/Ytd+C8o2NyEv+hQ8WbMbSa4vM+mEqrhxBoIvvzFyemKYLHwBWHUd94nOYTv0uuM3KhIAbZ5ZJfcsjp1PHZnelSXOdKooRflm46ATIPke1k4EA0TF5LNeZT+bRbCUXFfYhfqhLyHrCYY4cPSWcOkdnfL/z9fTYyF4n9CW0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777419958; c=relaxed/simple; bh=K+vaP2nMwIyYoWLRAJ8KOc+0zXq9dzqeDfUA1fjaXMI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RfAD89pj/MdrqyYDYmkZBjSOgRMk1mBjw9SStKDGrV6H290GZBPLV8JNgI2BCGiVqcWgy2gMrMyO//mh/k/ikyvXsGMWZBV6SXFauGFRhaxgKNJC2i+mkhza8wq/Qn1OiZ7o00f7nQrn/m6Qjb1GNCaOvyt8O/4iwMjvS/1sMK8= 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=e8Iu+QOD; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="e8Iu+QOD" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-488ab2db91aso168558015e9.3 for ; Tue, 28 Apr 2026 16:45:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777419955; x=1778024755; 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=9hjnI5sv67kd9Z2OrkU0HujdVy68CkTBm54JLMxtNMI=; b=e8Iu+QODV8uRdOwMSmRvfGkMPO+3CLU0MsuceJg5CkPdvfWZ57udb6rBfmhS/wfvPZ +KAM2XGLc93nDyU5lTh+0icfnITXy5TqICom7agUl5wc77bPXzJbiCfzeWSP/0Za2IgE ucrEKYqx5niEaz6auGDFIKgzFAaqIjS+Eb4a7lfzua++S6BrlGuAdSHomhwIFFgRtAl8 aBdTIneRvTV/utVZ9+gckC1gFx+Ig6YzXKBxlUTMIxwvEvIGtSKnI8m8BaDO1L00WtQ1 SJtnYTW5pTo9ppX0QogskBGpDw9HApyIdARss/b1LLJBuiOz2UQcgZG23STBMoNPo7v5 bgjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777419955; x=1778024755; 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=9hjnI5sv67kd9Z2OrkU0HujdVy68CkTBm54JLMxtNMI=; b=WlHojsflBRFOrvslqdHENzvdQDMtUmWwxG/OAaqLs1n/VlJqKi2R0OTPdFZZD+eH4C Ix4muYdx7C0bgmvcOGWRxsNCh8ozgf0bpKSIM3iSb4tJ0wEhYbVPdY2K5/qyTApogwq1 1iDz8XDCTQSkx7/vMoByYjzTWHAaz/96LK9EDPPmMxnz4vBd9vTBHbADVPq40uqwBRfS R5gh83zl87x8BLv8vmzz0aKdtWTatvOrrM0KyqHIQBaYVOrDAwJP92VD70hu2rHkJi3t HrmanmPvYn61KTmcmrIYdBCpyi964CXJk4yUVodOj38nd/jwsEOBodVFKI/FVcR45a2v apCg== X-Forwarded-Encrypted: i=1; AFNElJ8A+ZYvduz5+sMVt8mJt/kGEdHfhfHakpXm5qEVjDrZHDmeCtpMELKHFhhbuKI54N8R+3lJeK6mjQmBb2w=@vger.kernel.org X-Gm-Message-State: AOJu0YyghQrqREjMlgMAPrMnRqGEGSH2hg2BwNc3bnAzdydOUhvtwaz/ dkpocPgeNr6HgDidXChE5jfn0oLCM7Q0E+xpKeJg9N0NhY5iO6DPhz1V40ysHy9M20E= X-Gm-Gg: AeBDiesakzN8I31ytIcU8WtAG86J+0prc2mSNRXYpTaK0CgTHeIp3YStEAcb7R966Iu zZ1PvRY/jd1YWryRlpr46+E22v6J5x0bopkhP63JRGK2YfmO4VQtO2XDMeizqDutvkryjXQPow9 gir2YoyvnKOay5YROaXHzX7Eo4/jWnHTNM3ZqiILVHvFi8KDqNTD06JoShWZGMwB21uERnwMKDn 0GVfMS4ZZcE0yHdkTRl4KLU4nlSHa5KC2g8xaqeh+QYJ92BlgZMY3lXYxi/3hS8K25UiBa33yjZ RCVuj1yKpdFoy+r03e20QFdAayPtI0FS8nC8lCyR4skD61PMzvsXP1Kip1/53/yCsg+AJnMUmNe RHtKAo9o7Z5/RfVOAydWAA5W76ZqX3jqQdzyFAeDuPw7iiRgSX25zKr71f2vsdAxgzrkV4+7ghw WjP2OktpW92CKJb7EaknDxZymg X-Received: by 2002:a05:600c:8595:b0:489:6c22:e081 with SMTP id 5b1f17b1804b1-48a7b4d5292mr19685905e9.0.1777419955103; Tue, 28 Apr 2026 16:45:55 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-573b6d87e40sm207420e0c.12.2026.04.28.16.45.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 16:45:53 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 28 Apr 2026 20:45:10 -0300 Subject: [PATCH bpf-next v8 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: <20260428-selftests-bpf_misconfig-v8-9-bf02cf97dbcb@suse.com> References: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@suse.com> In-Reply-To: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@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=1777419912; l=2217; i=rbm@suse.com; h=from:subject:message-id; bh=K+vaP2nMwIyYoWLRAJ8KOc+0zXq9dzqeDfUA1fjaXMI=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QCLRSJzLFmbxcd8Oti89XkYLPxUKPMs9XiDZ2GentAu+0JH4vQWhDEuNUNurJmaqlvTu7XnhPDs iNsBf19PdGQ4= 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 9a5177455f0a..461e2d9416fc 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -939,7 +939,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 \ @@ -982,7 +983,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,$(if $(PERMISSIVE),$(wild= card $^),$^)) $(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 Wed Jun 17 01:42:11 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 355913A3809 for ; Tue, 28 Apr 2026 23:46:01 +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=1777419964; cv=none; b=EImDdKTGfuJNpEiZktdvDe+mRbHX/N8q4HD/Uhspj55eyie4o5IXvuto/8Aw+DDW55wuh8ukzZVtCQ7LxBNuJUH+3czq4OfgtXwxj2NxqNPyHpbyxXXA54WztDQOPNrks6PYi3WUPf7vD8qunI7BpI0C8akuKrItkkUxwPNwwzg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777419964; c=relaxed/simple; bh=P1kmeBBxz6oLlrcr3TGMtgJ39fvP2CkFwTpn0Vo40DI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JaNUUqZKIsteFOjEVSjaASt3qa1eP1ECG66Pg/dAod5ddeWWw7Nzqmt62N3ABbWp22D0oPjMzWZFXMmZRnXN9zTbIbwupt7piL8TDqRUEF4u7p/etY4gfpCDnooPDb6sfx4H8RPkceVtqub9wyhOMVNcnS4FfyLxEm1hIaNphJI= 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=XQ23Q8KS; 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="XQ23Q8KS" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-4852a9c6309so109066315e9.0 for ; Tue, 28 Apr 2026 16:46:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777419960; x=1778024760; 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=gzn0A233UxptBOFA9FIvgdlvl14jtwnlOOk9eQvvLMU=; b=XQ23Q8KSFoJQ+1bA3eBe4+bJiW5hmuSdTa0O2tlKlGT6HkVu/TYCfoTC0vhahGAntj 9v/+JWP05sJlxETIKvzMi6iLpv4aQszGRfYoroZrQMAyDbqkofwRE6tEF/++alDtDbg0 b51IkGzhsyUn9pCez3Cr6+kfxgTRE0Uyj4UkEqX8CIZD80skwt6fjGKeFCWXLarA80hC sWTAAmCyfDJ72ACZeAxIEW8Obf6LYsIAheBBFczUTV4LLqD/xXdiBolRAGRXN/4gzSJF pwgQIx6iDgaD1g4AgLuDUG5KKCmVvyCSUMg9xtUc2sf4gJaPhbx8jirAWnRaZjZMLlHf vSDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777419960; x=1778024760; 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=gzn0A233UxptBOFA9FIvgdlvl14jtwnlOOk9eQvvLMU=; b=qFeb+0D0zrPVdueTHEvmUj/fYVWHh8Y5/NxzezzucK0V4q/eQ0D2U1+0b4nY28l8oT WmbXaSwlY7A8qlly81QeKs5z2OJnJ1XxdwH5nR4ou0+N9AWuSO/ACy4FOv6YUXCGNw1H KBICL5VWQnea0AHCvFd1vFUNjiblZkoH2DXL07emq++6QLyPlFnTNE0HwGWPkuC9PhZX U3QQbnfbWPi7YkXcV3jxeElQ0XbZDA7dzs22u3oAHvrrxLnw0BPeiZv9ACUOpL0/ryqy aNj8WVItuNb/IOYfJ1e+8tN0+tGizYOh89Cg1cpHK+LfljCd0NwGs2uyAQ0pLbauCA1W SjMQ== X-Forwarded-Encrypted: i=1; AFNElJ/2JS9GqlPmexRYGg8Q4ZTZCCwbTrJT6QaPZGXMyaP/6ytxXlQ3uo5aTiZxDhxhDRUPVU8dAbgBtVJ078o=@vger.kernel.org X-Gm-Message-State: AOJu0Yzyeihu8uFbcRNEzjtRNH+lEmdwm+NwtBIpnpZowmC9zaHfwxlr dq0hjCZ4SxtvetT5k13m691OSZqYBkeljkdMYu0Ijp3vfBg7Wnfh7x7eTdoYV7XVz+Q= X-Gm-Gg: AeBDievHL1cOQCqarBAn2sTn8+PuyZ/MpdjbjcfTuB/FxxgzVP4C1d5yo3lstInTbob QhlB6rcB74p3W7Ybvq2+mPudCr9SHayiK+kJG08bo77CSQqh8t8XeeluNybPKmNwoCFq/dI8+Q6 ZZ2QtLWhE9wXFoobHxgB5neKaMkoV3mbyQFTjFgS1TWoLHBCYk91HI9D5sRk0zC4ga9++B9BjfY gMwILKo5dcJzsxvtlctn3S/3xVT5sWcAneKDaDizGsMr2yidk1w1C1zAo+TNpKbrKrDyNzljSJk fl7tyHIN64HqbU3xK01gO6AfkVmjBJDGuUxYF4hf1ClG9EuHl6/Vqo8ZbCVwiS6doLFrtoa+syO aIDto05A0JYnZYV4rfIYPTsl6wjrlppQjpsS12Gz1U5fxaYBD1VVU3lJgL0X3LfPV6rVNz/OnHG rO9cU2D/sAjPozoiyU/Xg65RH60z0CSvBelIk= X-Received: by 2002:a05:600c:8283:b0:489:1f08:91b with SMTP id 5b1f17b1804b1-48a77b1da8emr81247695e9.16.1777419959818; Tue, 28 Apr 2026 16:45:59 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-573b6d8b84bsm201147e0c.10.2026.04.28.16.45.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 16:45:58 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 28 Apr 2026 20:45:11 -0300 Subject: [PATCH bpf-next v8 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: <20260428-selftests-bpf_misconfig-v8-10-bf02cf97dbcb@suse.com> References: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@suse.com> In-Reply-To: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@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=1777419912; l=5203; i=rbm@suse.com; h=from:subject:message-id; bh=P1kmeBBxz6oLlrcr3TGMtgJ39fvP2CkFwTpn0Vo40DI=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QPnDxtNvxjb2j89XeyFx0apJDJ7Fuz13GuAXwoOT6AnvK4+56rJtqmtm1L2f201q7hVCtYFCdaD TiwQBjxdleAE= 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. 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 | 17 +++++++++++++++++ tools/testing/selftests/bpf/testing_helpers.h | 1 + 5 files changed, 29 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..3f7ae76c209b 100644 --- a/tools/testing/selftests/bpf/testing_helpers.c +++ b/tools/testing/selftests/bpf/testing_helpers.c @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include "disasm.h" @@ -516,3 +517,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 Wed Jun 17 01:42:11 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 D31C939C65F for ; Tue, 28 Apr 2026 23:46:05 +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=1777419967; cv=none; b=HMV+5j925A9pk2uZ3WFa7mLkSA+7P8thfzdtQMyNhDqK/RKls50Lbp11LX/Pg6M9QPv5KLVfCZlERLohwjPiuAyFlSVO2wTk7D1t+XE0waQmQxWBw6qd3dmtaCJrY+mrd5+Ewy2EvB6cp4OFmaY7F2jAL++96jfmc8HNKAOypPk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777419967; c=relaxed/simple; bh=/izrmfoNTErOF0QoJyqRR2oNNCmtADhmsCqLhuVNNYw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OkszPuzi/LIWTGUzP9W1TKZeDh51omrWJ6Xs3DPm9z4g0hpG3fYVyEOS8EZ6IoZEhaAHmm+MAQCWQGO5TxfL1Gdd4FxYdcZLHUav7Y3uqGZKCwpgKwo6NV9SErLsXx83pwf9tIJfiSO4n1gOUCwIMSbubs8Q2j2Cvk5lAQCE434= 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=gdMO4g1h; 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="gdMO4g1h" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-488ad135063so108537135e9.0 for ; Tue, 28 Apr 2026 16:46:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777419964; x=1778024764; 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=hR7c8YMvP9LQvNeuTjxfIeyv3ZVfJWeQnEPeA75OGwc=; b=gdMO4g1hpgqkCryRhK89nOLyjNiabDxgNL9B33laTn32NgmNk+kMEQyKuwBWnectOA bZjF+ncZSv0/S4PmSt/cSjBC4ZRSNzPR0KGmGRaBghmwDayWkZyMkAKGFjaXLj6Wsi2a WTJjOI7xZimimQg26ChNBlPmN4nRJ8D1WqVwg6LJasVrEdiEd29KDtrwf7wvyD0Vy9Yd jgyOW3Co4weu8vpnp9GuC5fmjTtnDfCYZfEU9iAuvqUY9FTrZ/ZPzdzpTzp+oVrN20gt jXbxGBGDebB47qy02jP/mIz9uhr5RAJZvv5AX5iwJAoGSYN9cYCitN0tRp8F0796C1Hh T+aA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777419964; x=1778024764; 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=hR7c8YMvP9LQvNeuTjxfIeyv3ZVfJWeQnEPeA75OGwc=; b=mXRQodvtUkIROO+jGioiPyKFjuRtboxkHmyupndEFXyVBbpJ9x9neYBYALm8Z9Ily0 zU96yJXCQPuK3s2lMIwefWXJkXCELedSKk4u/S6Y0a+n/vkMviSK4reH290TJncVW+4E cGO8lfgVGiQ2A9kaZ9Gvc1129b+HOFGFTC98pXFeLUxmFTdRZZVTuHYFcOdRX05tIXZi UzZhDgJmy/pKdKJ4NT3tXI+TA/72ukfgbCoaZdVa9tpzYAnzOmU/PJE/zRiuFI6RfznT E3alHm1YArs4CAYTMgmKgyrM8sqkvkihe/J+xrMTmDNsa4MkIqR7USJjy8dmZoYSFmOv bIPQ== X-Forwarded-Encrypted: i=1; AFNElJ8RKwLyFRtkn+oAJVmds38j1fcK7iWmEQBuET3QBXVIwVV06drWXsaP9Me5ZMU4cD/6HpkY7sKBSkogNAc=@vger.kernel.org X-Gm-Message-State: AOJu0YwmfZ4FQE5Nb+PeN1sNV+Gwr8oHoQMOh0Xvc/pu5QkYNbowf1Pj EL2TbaiiWw9VbA4BzpUmFl7p9plxtdN+2aiLdSrkCn8j3pD4i6VdnhJ2j5fm3LOncU8= X-Gm-Gg: AeBDieu34agvX6RzInCfSwVrq5366GuEI+B0TP8FAIZbbE4g0LQlWaBtRnC14g5i9Gp 8KLYQTr+BenqQfJl7zXfM12H4eeZpbTGxGStBK1hwfRBpPFyuooEOCFAqDcJkUBCxaLZpXXur5X Xo0AxAUR1in2L3Q4+TD+mHf6PFdyG2DBC1wUSgF4aFd5aNCpj1YudA84gmNeVnhnP0kpEHe/D4M Q2vjmCOG19+NhccQosqaYrfksvSIztFkSGajHT1HsE31rYUsCO+ratqpSvOnBJ5hw3Oy3LSO6Th zgvxdfNYfi52Oq400iNs6fDy/5WA8vXYG6bwIugE5LB5/GX0qt/LOLBB5pPqGY3OeW06TAiCQcB sNfB8YhERjhjmcLEOwj/ZI2l6tJGGzAq0IgCTOp9KCcGuvZWkm/EdLPWP3Q+wwpFzLKjCuTav5M jijV5oig8ZAXN9ibKTF0uzHaAN X-Received: by 2002:a05:600c:4e91:b0:471:700:f281 with SMTP id 5b1f17b1804b1-48a7b54b1c7mr24789895e9.25.1777419964535; Tue, 28 Apr 2026 16:46:04 -0700 (PDT) Received: from localhost ([2804:7f0:b765:105d:ce28:aaff:fe86:149c]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-573b6953946sm271414e0c.0.2026.04.28.16.46.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 16:46:02 -0700 (PDT) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Tue, 28 Apr 2026 20:45:12 -0300 Subject: [PATCH bpf-next v8 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: <20260428-selftests-bpf_misconfig-v8-11-bf02cf97dbcb@suse.com> References: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@suse.com> In-Reply-To: <20260428-selftests-bpf_misconfig-v8-0-bf02cf97dbcb@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=1777419912; l=2156; i=rbm@suse.com; h=from:subject:message-id; bh=/izrmfoNTErOF0QoJyqRR2oNNCmtADhmsCqLhuVNNYw=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QBbgjXwVu2unS8JglD6UCKZJvCJEJAlmSjrzgmiYPCBRyG9YG5E/X2CY352VvtcvIUf+weYBF79 DIYd08L56eQk= 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 461e2d9416fc..3c3234a2ce15 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -1017,12 +1017,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