All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Ricardo B. Marlière" <rbm@suse.com>
Cc: bpf@vger.kernel.org
Subject: Re: [PATCH bpf-next v6 02/11] selftests/bpf: Fix test_kmods KDIR to honor O= and distro kernels
Date: Thu, 16 Apr 2026 12:53:20 +0000	[thread overview]
Message-ID: <20260416125321.7AF09C2BCAF@smtp.kernel.org> (raw)
In-Reply-To: <20260416-selftests-bpf_misconfig-v6-2-7efeab504af1@suse.com>

Sashiko AI review found 2 potential issue(s):
- [Medium] Relative paths passed via `O=` are incorrectly evaluated from the kernel source root instead of the invocation directory.
- [Medium] The `make clean` target unconditionally fails and aborts the build if the kernel source tree is unconfigured and distro headers are missing.
--

commit 533e8d39cc98f56f3dff4f8c5bff0dcd49fc6ef1
Author: Ricardo B. Marlière <rbm@suse.com>

selftests/bpf: Fix test_kmods KDIR to honor O= and distro kernels

This commit modifies test_kmods/Makefile to honor O= and KBUILD_OUTPUT, and
adds a fallback to /lib/modules/$(uname -r)/build for distro kernels. It also
makes missing KDIR silently skipped when building in permissive mode.

> diff --git a/tools/testing/selftests/bpf/test_kmods/Makefile b/tools/testing/selftests/bpf/test_kmods/Makefile
> index 63c4d3f6a12f6..10f202bd0d8c2 100644
> --- a/tools/testing/selftests/bpf/test_kmods/Makefile
> +++ b/tools/testing/selftests/bpf/test_kmods/Makefile
> @@ -1,5 +1,7 @@
>  TEST_KMOD_DIR := $(realpath $(dir $(abspath $(lastword $(MAKEFILE_LIST)))))
> -KDIR ?= $(abspath $(TEST_KMOD_DIR)/../../../../..)
> +SRCTREE_KDIR := $(abspath $(TEST_KMOD_DIR)/../../../../..)
> +KMOD_O := $(or $(O),$(KBUILD_OUTPUT))

Will this break out-of-tree builds if a user passes a relative path?

If a user builds selftests with a relative O= path (e.g. make O=out), KMOD_O
captures this relative string and passes it unaltered to the kernel build
system via make -C $(KDIR) O=$(KMOD_O).

Because make -C changes the working directory to $(KDIR) before evaluating
O=, the relative path will be evaluated relative to the kernel root rather
than the directory where make was originally invoked.

[ ... ]
> @@ -14,8 +16,24 @@ $(foreach m,$(MODULES),$(eval obj-m += $(m:.ko=.o)))
>  
>  CFLAGS_bpf_testmod.o = -I$(src)
>  
> +# When BPF_STRICT_BUILD != 0, a missing KDIR is fatal (the default).
> +# When permissive, skip silently.
> +PERMISSIVE := $(filter 0,$(BPF_STRICT_BUILD))
> +
>  all:
> -	$(Q)$(MAKE) -C $(KDIR) M=$(TEST_KMOD_DIR) modules
> +ifeq ($(PERMISSIVE),)
> +	$(Q)$(MAKE) -C $(KDIR) $(if $(KMOD_O),O=$(KMOD_O),KBUILD_OUTPUT=) \
> +		M=$(TEST_KMOD_DIR) modules

[ ... ]

>  clean:
> -	$(Q)$(MAKE) -C $(KDIR) M=$(TEST_KMOD_DIR) clean
> +ifeq ($(PERMISSIVE),)
> +	$(Q)$(MAKE) -C $(KDIR) $(if $(KMOD_O),O=$(KMOD_O),KBUILD_OUTPUT=) \
> +		M=$(TEST_KMOD_DIR) clean

Does this unconditionally abort make clean if the kernel source tree is
unconfigured and distro headers are missing?

If the system lacks installed kernel headers, /lib/modules/$(uname -r)/build
will not exist. In the default strict mode, GNU Make's -C flag will
immediately throw a fatal 'No such file or directory' error and abort the
make clean process.

> +else ifneq ("$(wildcard $(KDIR))", "")
> +	$(Q)$(MAKE) -C $(KDIR) $(if $(KMOD_O),O=$(KMOD_O),KBUILD_OUTPUT=) \
> +		M=$(TEST_KMOD_DIR) clean
> +endif

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260416-selftests-bpf_misconfig-v6-0-7efeab504af1@suse.com?part=2

  reply	other threads:[~2026-04-16 12:53 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-16 12:21 [PATCH bpf-next v6 00/11] selftests/bpf: Tolerate partial builds across kernel configs Ricardo B. Marlière
2026-04-16 12:21 ` [PATCH bpf-next v6 01/11] selftests/bpf: Add BPF_STRICT_BUILD toggle Ricardo B. Marlière
2026-04-16 12:21 ` [PATCH bpf-next v6 02/11] selftests/bpf: Fix test_kmods KDIR to honor O= and distro kernels Ricardo B. Marlière
2026-04-16 12:53   ` sashiko-bot [this message]
2026-04-26 23:40     ` Alexei Starovoitov
2026-04-27 21:23       ` Ricardo B. Marlière
2026-04-16 12:21 ` [PATCH bpf-next v6 03/11] selftests/bpf: Tolerate BPF and skeleton generation failures Ricardo B. Marlière
2026-04-16 12:21 ` [PATCH bpf-next v6 04/11] selftests/bpf: Avoid rebuilds when running emit_tests Ricardo B. Marlière
2026-04-16 12:21 ` [PATCH bpf-next v6 05/11] selftests/bpf: Make skeleton headers order-only prerequisites of .test.d Ricardo B. Marlière
2026-04-25  1:13   ` sashiko-bot
2026-04-16 12:21 ` [PATCH bpf-next v6 06/11] selftests/bpf: Tolerate test file compilation failures Ricardo B. Marlière
2026-04-16 12:21 ` [PATCH bpf-next v6 07/11] selftests/bpf: Skip tests whose objects were not built Ricardo B. Marlière
2026-04-16 12:21 ` [PATCH bpf-next v6 08/11] selftests/bpf: Allow test_progs to link with a partial object set Ricardo B. Marlière
2026-04-16 13:03   ` bot+bpf-ci
2026-04-16 18:11   ` sashiko-bot
2026-04-16 12:21 ` [PATCH bpf-next v6 09/11] selftests/bpf: Tolerate benchmark build failures Ricardo B. Marlière
2026-04-16 12:21 ` [PATCH bpf-next v6 10/11] selftests/bpf: Provide weak definitions for cross-test functions Ricardo B. Marlière
2026-04-16 12:21 ` [PATCH bpf-next v6 11/11] selftests/bpf: Tolerate missing files during install Ricardo B. Marlière

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260416125321.7AF09C2BCAF@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=rbm@suse.com \
    --cc=sashiko@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.