Re: [RFC PATCH bpf-next v2 2/2] selftests/livepatch: update test-ftrace.sh for deprecated ftrace_enabled
Joe Lawrence <[email protected]> Fri, 31 Jul 2026 20:30:58 -0400
| Newsgroups | org.kernel.vger.live-patching,org.kernel.vger.bpf,org.kernel.vger.linux-doc,org.kernel.vger.linux-kselftest,org.kernel.vger.linux-trace-kernel,org.kernel.vger.stable |
|---|---|
| Message-ID | <[email protected]> |
On Fri, Jul 31, 2026 at 01:53:58PM -0400, Andrey Grodzovsky wrote: > kernel.ftrace_enabled=0 is now refused on kernels that deprecate the > knob, so the old disable/reload flow no longer applies there. Probe > for this with ftrace_disable_supported() and keep the full original > scenario (disable, fail to load a livepatch, re-enable, load, confirm > disable is refused while loaded) on kernels where it still works; > otherwise just confirm the write is refused. > > Suggested-by: Steven Rostedt <[email protected]> > Suggested-by: Miroslav Benes <[email protected]> > Assisted-by: Claude:claude-sonnet-5 > Signed-off-by: Andrey Grodzovsky <[email protected]> > --- > .../testing/selftests/livepatch/functions.sh | 13 ++++++ > .../selftests/livepatch/test-ftrace.sh | 45 ++++++++++++------- > 2 files changed, 41 insertions(+), 17 deletions(-) > > diff --git a/tools/testing/selftests/livepatch/functions.sh b/tools/testing/selftests/livepatch/functions.sh > index 30dc677b2f45..7fa4bda70221 100644 > --- a/tools/testing/selftests/livepatch/functions.sh > +++ b/tools/testing/selftests/livepatch/functions.sh > @@ -126,6 +126,19 @@ function set_ftrace_enabled() { > echo "livepatch: kernel.ftrace_enabled = $result" > /dev/kmsg > } > > +# ftrace_disable_supported() - probe whether kernel.ftrace_enabled=0 > +# can still disable ftrace on this kernel. Newer kernels deprecate > +# the knob and always refuse the write with -EOPNOTSUPP. > +function ftrace_disable_supported() { > + local result > + > + sysctl -q kernel.ftrace_enabled=0 &> /dev/null > + result=$(sysctl --values kernel.ftrace_enabled) > + sysctl -q kernel.ftrace_enabled=1 &> /dev/null > + > + [[ "$result" == "0" ]] > +} Small nit: AFAICT, it doesn't really affect the test pattern, but it would be a bit cleaner if this function restored the original value instead of always turning it on, like (untested): orig=$(sysctl --values kernel.ftrace_enabled) sysctl -q kernel.ftrace_enabled=0 &> /dev/null result=$(sysctl --values kernel.ftrace_enabled) sysctl -q "kernel.ftrace_enabled=$orig" &> /dev/null [[ "$result" == "0" ]] -- Joe