This is a note to let you know that I've just added the patch titled tracing/probes: Fix to update dynamic data counter if fetcharg uses it to the 6.1-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: tracing-probes-fix-to-update-dynamic-data-counter-if-fetcharg-uses-it.patch and it can be found in the queue-6.1 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From e38e2c6a9efc435f9de344b7c91f7697e01b47d5 Mon Sep 17 00:00:00 2001 From: "Masami Hiramatsu (Google)" <mhiramat@xxxxxxxxxx> Date: Tue, 11 Jul 2023 23:15:48 +0900 Subject: tracing/probes: Fix to update dynamic data counter if fetcharg uses it From: Masami Hiramatsu (Google) <mhiramat@xxxxxxxxxx> commit e38e2c6a9efc435f9de344b7c91f7697e01b47d5 upstream. Fix to update dynamic data counter ('dyndata') and max length ('maxlen') only if the fetcharg uses the dynamic data. Also get out arg->dynamic from unlikely(). This makes dynamic data address wrong if process_fetch_insn() returns error on !arg->dynamic case. Link: https://lore.kernel.org/all/168908494781.123124.8160245359962103684.stgit@devnote2/ Suggested-by: Steven Rostedt <rostedt@xxxxxxxxxxx> Link: https://lore.kernel.org/all/20230710233400.5aaf024e@xxxxxxxxxxxxxxxxxx/ Fixes: 9178412ddf5a ("tracing: probeevent: Return consumed bytes of dynamic area") Cc: stable@xxxxxxxxxxxxxxx Signed-off-by: Masami Hiramatsu (Google) <mhiramat@xxxxxxxxxx> Reviewed-by: Steven Rostedt (Google) <rostedt@xxxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- kernel/trace/trace_probe_tmpl.h | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) --- a/kernel/trace/trace_probe_tmpl.h +++ b/kernel/trace/trace_probe_tmpl.h @@ -206,11 +206,13 @@ store_trace_args(void *data, struct trac if (unlikely(arg->dynamic)) *dl = make_data_loc(maxlen, dyndata - base); ret = process_fetch_insn(arg->code, rec, dl, base); - if (unlikely(ret < 0 && arg->dynamic)) { - *dl = make_data_loc(0, dyndata - base); - } else { - dyndata += ret; - maxlen -= ret; + if (arg->dynamic) { + if (unlikely(ret < 0)) { + *dl = make_data_loc(0, dyndata - base); + } else { + dyndata += ret; + maxlen -= ret; + } } } } Patches currently in stable-queue which might be from mhiramat@xxxxxxxxxx are queue-6.1/fprobe-release-rethook-after-the-ftrace_ops-is-unregistered.patch queue-6.1/tracing-probes-fix-to-update-dynamic-data-counter-if-fetcharg-uses-it.patch queue-6.1/fprobe-ensure-running-fprobe_exit_handler-finished-before-calling-rethook_free.patch queue-6.1/tracing-fix-null-pointer-dereference-in-tracing_err_log_open.patch queue-6.1/kernel-trace-fix-cleanup-logic-of-enable_trace_eprob.patch queue-6.1/tracing-probes-fix-not-to-count-error-code-to-total-length.patch