Re: [RFC PATCH bpf-next v2 2/2] selftests/livepatch: update test-ftrace.sh for deprecated ftrace_enabled

Joe Lawrence <[email protected]>
Newsgroups gmane.linux.kernel.stable,gmane.linux.kernel.bpf,gmane.linux.documentation
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" ]]
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.