BPF List
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Jiangshan Yi" <yijiangshan@kylinos.cn>
Cc: bpf@vger.kernel.org
Subject: Re: [PATCH] tools/resolve_btfids: fix OUTPUT leakage from kselftest causing corrupted build paths
Date: Thu, 16 Jul 2026 09:09:35 +0000	[thread overview]
Message-ID: <20260716090936.4168C1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260716085733.1761196-1-yijiangshan@kylinos.cn>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] The patch forcibly overrides the `OUTPUT` variable to the source tree directory if its origin is `command line` or `environment`. This breaks intentional out-of-tree builds for kernel tools and selftests (such as BPF and HID) which explicitly pass an `OUTPUT=` path on the command line. By overriding the requested path, the build writes artifacts into the source tree instead of the expected output directory, violating read-only source tree configurations and causing the selftest builds to fail because the `resolve_btfids` binary is missing from the required location.
--

--- Patch [1]: [PATCH] tools/resolve_btfids: fix OUTPUT leakage from kselftest causing corrupted build paths ---
commit b49b49183f48428e27843ec3019b42192ca9ed12
Author: Jiangshan Yi <yijiangshan@kylinos.cn>

tools/resolve_btfids: fix OUTPUT leakage from kselftest causing corrupted build paths

This commit addresses corrupted build paths caused by the OUTPUT variable
leaking from parent makes like kselftest. It attempts to fix this by checking
if OUTPUT comes from the command line or environment, and if so, overrides
it back to the source tree directory.

> diff --git a/tools/bpf/resolve_btfids/Makefile b/tools/bpf/resolve_btfids/Makefile
> index 7672208f65e4b..eee88c73fd7a1 100644
> --- a/tools/bpf/resolve_btfids/Makefile
> +++ b/tools/bpf/resolve_btfids/Makefile
> @@ -26,6 +26,22 @@ HOSTAR  ?= ar
>  HOSTPKG_CONFIG ?= pkg-config
>  CROSS_COMPILE =
>  
> +# If OUTPUT was inherited from a parent build's command line (e.g. from
> +# kselftest), it points to the wrong directory and may lack a trailing
> +# slash.  The tools/build Makefile.build concatenates $(OUTPUT) with
> +# filenames without a separating slash ($(OUTPUT)%.o), so a missing
> +# trailing '/' produces corrupted paths such as "mmmain.o" instead of
> +# "mm/main.o", and the linker cannot find resolve_btfids-in.o.
> +#
> +# When built via the kernel build system, OUTPUT is set by
> +# scripts/Makefile.include (origin "file") from the O= parameter, which
> +# is correct.  Only a command-line origin indicates leakage from a
> +# parent build and needs to be reset.  Both "command line" and
> +# "environment" origins indicate leakage; "file" (set by Makefile.include
> +# from O=) and "undefined" are legitimate and must not be overridden.
> +ifneq ($(filter command line environment,$(origin OUTPUT)),)
> +override OUTPUT := $(srctree)/tools/bpf/resolve_btfids/
> +endif

[Severity: Low]
Does this override break intentional out-of-tree builds? 

When building BPF or HID selftests out-of-tree, the build system explicitly
passes an OUTPUT= path on the command line. Because the origin is evaluated as
"command line", this logic unconditionally overrides it, discarding the properly
requested out-of-tree path.

Won't this cause artifacts to be written directly into the source tree, violating
read-only source tree configurations and causing the build to fail when it looks
for the resolve_btfids binary in the expected output directory?

>  OUTPUT ?= $(srctree)/tools/bpf/resolve_btfids/
>  
>  LIBBPF_SRC := $(srctree)/tools/lib/bpf/

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260716085733.1761196-1-yijiangshan@kylinos.cn?part=1

      reply	other threads:[~2026-07-16  9:09 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-16  8:57 [PATCH] tools/resolve_btfids: fix OUTPUT leakage from kselftest causing corrupted build paths Jiangshan Yi
2026-07-16  9:09 ` sashiko-bot [this message]

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=20260716090936.4168C1F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=yijiangshan@kylinos.cn \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox