Re: [PATCH v5 6/9] selftests: livepatch: Adapt atomic replace tests to provides/obsoletes

Yafang Shao <[email protected]>
Newsgroups dev.linux.lists.sashiko-reviews,org.kernel.vger.live-patching
Message-ID <CALOAHbBe=1W8pyWJ6evZFmeUeLevxgy39CecKHrpU2LifUK8EA@mail.gmail.com>
On Sun, Aug 9, 2026 at 5:33 PM <[email protected]> wrote:
>
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [Medium] The 'replace' feature detection in test_modules/Makefile fails for out-of-tree (O=) kernel builds, breaking tests on older kernels.
> --
>
> --- Patch [6]: [PATCH v5 6/9] selftests: livepatch: Adapt atomic replace tests to provides/obsoletes ---
> commit e4d15e9f2792340ea543b405f9d074e729665c9b
> Author: Yafang Shao <[email protected]>
>
> selftests: livepatch: Adapt atomic replace tests to provides/obsoletes
>
> The legacy "replace" field in struct klp_patch was replaced by the
> provides/obsoletes mechanism. This commit adapts selftests to build and
> run on both old and new kernels by detecting the presence of the
> "replace" field.
>
> > diff --git a/tools/testing/selftests/livepatch/test_modules/Makefile b/tools/testing/selftests/livepatch/test_modules/Makefile
> > index a13d398585dcb..29c55df360467 100644
> > --- a/tools/testing/selftests/livepatch/test_modules/Makefile
> > +++ b/tools/testing/selftests/livepatch/test_modules/Makefile
> > @@ -16,6 +16,16 @@ obj-m += test_klp_atomic_replace.o \
> >       test_klp_state3.o \
> >       test_klp_syscall.o
> >
> > +# The legacy "replace" field was replaced by provides/obsoletes. When the
> > +# kernel (KDIR) still supports "replace", pass KLP_HAS_REPLACE to the
> > +# modules so that they can #ifdef the legacy "replace" code. Otherwise
> > +# the modules are built with the provides/obsoletes based code (to be
> > +# added later).
> > +KLP_HAS_REPLACE := $(shell grep -q 'bool replace' $(KDIR)/include/linux/livepatch.h 2>/dev/null && echo y)
>
> [Severity: Medium]
> Will this grep fail for out-of-tree (O=...) kernel builds?
>
> If $(KDIR) points to the build directory rather than the source directory,
> $(KDIR)/include/linux/livepatch.h might not exist.
>
> When tests are run, detect_replace_attr() will still correctly identify the
> replace sysfs attribute on the running kernel and set HAS_REPLACE_ATTR=1.
>
> However, since the module would be compiled without KLP_HAS_REPLACE, it lacks
> the replace module parameter. When the test scripts attempt to load the module
> with replace=1, insmod will fail, causing the test suite to abort.

I believe this case is invalid. We always run `make run_tests` to
execute the full livepatch selftests, which ensures all kernel modules
are rebuilt against the running kernel.

-- 
Regards
Yafang
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.