+++ /dev/null
-From f458b2165d7ac0f2401fff48f19c8f864e7e1e38 Mon Sep 17 00:00:00 2001
-From: Lukas Bulwahn <lukas.bulwahn@redhat.com>
-Date: Fri, 17 Jan 2025 07:55:22 -0500
-Subject: arm64: Kconfig: Remove selecting replaced HAVE_FUNCTION_GRAPH_RETVAL
-
-From: Lukas Bulwahn <lukas.bulwahn@redhat.com>
-
-commit f458b2165d7ac0f2401fff48f19c8f864e7e1e38 upstream.
-
-Commit a3ed4157b7d8 ("fgraph: Replace fgraph_ret_regs with ftrace_regs")
-replaces the config HAVE_FUNCTION_GRAPH_RETVAL with the config
-HAVE_FUNCTION_GRAPH_FREGS, and it replaces all the select commands in the
-various architecture Kconfig files. In the arm64 architecture, the commit
-adds the 'select HAVE_FUNCTION_GRAPH_FREGS', but misses to remove the
-'select HAVE_FUNCTION_GRAPH_RETVAL', i.e., the select on the replaced
-config.
-
-Remove selecting the replaced config. No functional change, just cleanup.
-
-Fixes: a3ed4157b7d8 ("fgraph: Replace fgraph_ret_regs with ftrace_regs")
-Signed-off-by: Lukas Bulwahn <lukas.bulwahn@redhat.com>
-Link: https://lore.kernel.org/r/20250117125522.99071-1-lukas.bulwahn@redhat.com
-Signed-off-by: Will Deacon <will@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/arm64/Kconfig | 1 -
- 1 file changed, 1 deletion(-)
-
---- a/arch/arm64/Kconfig
-+++ b/arch/arm64/Kconfig
-@@ -221,7 +221,6 @@ config ARM64
- select HAVE_FUNCTION_ERROR_INJECTION
- select HAVE_FUNCTION_GRAPH_FREGS
- select HAVE_FUNCTION_GRAPH_TRACER
-- select HAVE_FUNCTION_GRAPH_RETVAL
- select HAVE_GCC_PLUGINS
- select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && \
- HW_PERF_EVENTS && HAVE_PERF_EVENTS_NMI
+++ /dev/null
-From ded9140622358a154efb3a777025fa7f7ae2c2d9 Mon Sep 17 00:00:00 2001
-From: Steven Rostedt <rostedt@goodmis.org>
-Date: Thu, 20 Feb 2025 15:20:12 -0500
-Subject: fprobe: Always unregister fgraph function from ops
-
-From: Steven Rostedt <rostedt@goodmis.org>
-
-commit ded9140622358a154efb3a777025fa7f7ae2c2d9 upstream.
-
-When the last fprobe is removed, it calls unregister_ftrace_graph() to
-remove the graph_ops from function graph. The issue is when it does so, it
-calls return before removing the function from its graph ops via
-ftrace_set_filter_ips(). This leaves the last function lingering in the
-fprobe's fgraph ops and if a probe is added it also enables that last
-function (even though the callback will just drop it, it does add unneeded
-overhead to make that call).
-
- # echo "f:myevent1 kernel_clone" >> /sys/kernel/tracing/dynamic_events
- # cat /sys/kernel/tracing/enabled_functions
-kernel_clone (1) tramp: 0xffffffffc02f3000 (ftrace_graph_func+0x0/0x60) ->ftrace_graph_func+0x0/0x60
-
- # echo "f:myevent2 schedule_timeout" >> /sys/kernel/tracing/dynamic_events
- # cat /sys/kernel/tracing/enabled_functions
-kernel_clone (1) tramp: 0xffffffffc02f3000 (ftrace_graph_func+0x0/0x60) ->ftrace_graph_func+0x0/0x60
-schedule_timeout (1) tramp: 0xffffffffc02f3000 (ftrace_graph_func+0x0/0x60) ->ftrace_graph_func+0x0/0x60
-
- # > /sys/kernel/tracing/dynamic_events
- # cat /sys/kernel/tracing/enabled_functions
-
- # echo "f:myevent3 kmem_cache_free" >> /sys/kernel/tracing/dynamic_events
- # cat /sys/kernel/tracing/enabled_functions
-kmem_cache_free (1) tramp: 0xffffffffc0219000 (ftrace_graph_func+0x0/0x60) ->ftrace_graph_func+0x0/0x60
-schedule_timeout (1) tramp: 0xffffffffc0219000 (ftrace_graph_func+0x0/0x60) ->ftrace_graph_func+0x0/0x60
-
-The above enabled a fprobe on kernel_clone, and then on schedule_timeout.
-The content of the enabled_functions shows the functions that have a
-callback attached to them. The fprobe attached to those functions
-properly. Then the fprobes were cleared, and enabled_functions was empty
-after that. But after adding a fprobe on kmem_cache_free, the
-enabled_functions shows that the schedule_timeout was attached again. This
-is because it was still left in the fprobe ops that is used to tell
-function graph what functions it wants callbacks from.
-
-Cc: stable@vger.kernel.org
-Cc: Mark Rutland <mark.rutland@arm.com>
-Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-Cc: Andrew Morton <akpm@linux-foundation.org>
-Cc: Sven Schnelle <svens@linux.ibm.com>
-Cc: Vasily Gorbik <gor@linux.ibm.com>
-Cc: Alexander Gordeev <agordeev@linux.ibm.com>
-Link: https://lore.kernel.org/20250220202055.393254452@goodmis.org
-Fixes: 4346ba1604093 ("fprobe: Rewrite fprobe on function-graph tracer")
-Tested-by: Heiko Carstens <hca@linux.ibm.com>
-Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
-Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- kernel/trace/fprobe.c | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
---- a/kernel/trace/fprobe.c
-+++ b/kernel/trace/fprobe.c
-@@ -374,11 +374,9 @@ static void fprobe_graph_remove_ips(unsi
- lockdep_assert_held(&fprobe_mutex);
-
- fprobe_graph_active--;
-- if (!fprobe_graph_active) {
-- /* Q: should we unregister it ? */
-+ /* Q: should we unregister it ? */
-+ if (!fprobe_graph_active)
- unregister_ftrace_graph(&fprobe_graph_ops);
-- return;
-- }
-
- ftrace_set_filter_ips(&fprobe_graph_ops.ops, addrs, num, 1, 0);
- }
+++ /dev/null
-From ca26554a1498bc905c4a39fb42d55d93f3ae8df2 Mon Sep 17 00:00:00 2001
-From: Steven Rostedt <rostedt@goodmis.org>
-Date: Thu, 20 Feb 2025 15:20:13 -0500
-Subject: fprobe: Fix accounting of when to unregister from function graph
-
-From: Steven Rostedt <rostedt@goodmis.org>
-
-commit ca26554a1498bc905c4a39fb42d55d93f3ae8df2 upstream.
-
-When adding a new fprobe, it will update the function hash to the
-functions the fprobe is attached to and register with function graph to
-have it call the registered functions. The fprobe_graph_active variable
-keeps track of the number of fprobes that are using function graph.
-
-If two fprobes attach to the same function, it increments the
-fprobe_graph_active for each of them. But when they are removed, the first
-fprobe to be removed will see that the function it is attached to is also
-used by another fprobe and it will not remove that function from
-function_graph. The logic will skip decrementing the fprobe_graph_active
-variable.
-
-This causes the fprobe_graph_active variable to not go to zero when all
-fprobes are removed, and in doing so it does not unregister from
-function graph. As the fgraph ops hash will now be empty, and an empty
-filter hash means all functions are enabled, this triggers function graph
-to add a callback to the fprobe infrastructure for every function!
-
- # echo "f:myevent1 kernel_clone" >> /sys/kernel/tracing/dynamic_events
- # echo "f:myevent2 kernel_clone%return" >> /sys/kernel/tracing/dynamic_events
- # cat /sys/kernel/tracing/enabled_functions
-kernel_clone (1) tramp: 0xffffffffc0024000 (ftrace_graph_func+0x0/0x60) ->ftrace_graph_func+0x0/0x60
-
- # > /sys/kernel/tracing/dynamic_events
- # cat /sys/kernel/tracing/enabled_functions
-trace_initcall_start_cb (1) tramp: 0xffffffffc0026000 (function_trace_call+0x0/0x170) ->function_trace_call+0x0/0x170
-run_init_process (1) tramp: 0xffffffffc0026000 (function_trace_call+0x0/0x170) ->function_trace_call+0x0/0x170
-try_to_run_init_process (1) tramp: 0xffffffffc0026000 (function_trace_call+0x0/0x170) ->function_trace_call+0x0/0x170
-x86_pmu_show_pmu_cap (1) tramp: 0xffffffffc0026000 (function_trace_call+0x0/0x170) ->function_trace_call+0x0/0x170
-cleanup_rapl_pmus (1) tramp: 0xffffffffc0026000 (function_trace_call+0x0/0x170) ->function_trace_call+0x0/0x170
-uncore_free_pcibus_map (1) tramp: 0xffffffffc0026000 (function_trace_call+0x0/0x170) ->function_trace_call+0x0/0x170
-uncore_types_exit (1) tramp: 0xffffffffc0026000 (function_trace_call+0x0/0x170) ->function_trace_call+0x0/0x170
-uncore_pci_exit.part.0 (1) tramp: 0xffffffffc0026000 (function_trace_call+0x0/0x170) ->function_trace_call+0x0/0x170
-kvm_shutdown (1) tramp: 0xffffffffc0026000 (function_trace_call+0x0/0x170) ->function_trace_call+0x0/0x170
-vmx_dump_msrs (1) tramp: 0xffffffffc0026000 (function_trace_call+0x0/0x170) ->function_trace_call+0x0/0x170
-[..]
-
- # cat /sys/kernel/tracing/enabled_functions | wc -l
-54702
-
-If a fprobe is being removed and all its functions are also traced by
-other fprobes, still decrement the fprobe_graph_active counter.
-
-Cc: stable@vger.kernel.org
-Cc: Mark Rutland <mark.rutland@arm.com>
-Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-Cc: Andrew Morton <akpm@linux-foundation.org>
-Cc: Sven Schnelle <svens@linux.ibm.com>
-Cc: Vasily Gorbik <gor@linux.ibm.com>
-Cc: Alexander Gordeev <agordeev@linux.ibm.com>
-Link: https://lore.kernel.org/20250220202055.565129766@goodmis.org
-Fixes: 4346ba1604093 ("fprobe: Rewrite fprobe on function-graph tracer")
-Closes: https://lore.kernel.org/all/20250217114918.10397-A-hca@linux.ibm.com/
-Reported-by: Heiko Carstens <hca@linux.ibm.com>
-Tested-by: Heiko Carstens <hca@linux.ibm.com>
-Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
-Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- kernel/trace/fprobe.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
---- a/kernel/trace/fprobe.c
-+++ b/kernel/trace/fprobe.c
-@@ -378,7 +378,8 @@ static void fprobe_graph_remove_ips(unsi
- if (!fprobe_graph_active)
- unregister_ftrace_graph(&fprobe_graph_ops);
-
-- ftrace_set_filter_ips(&fprobe_graph_ops.ops, addrs, num, 1, 0);
-+ if (num)
-+ ftrace_set_filter_ips(&fprobe_graph_ops.ops, addrs, num, 1, 0);
- }
-
- static int symbols_cmp(const void *a, const void *b)
-@@ -648,8 +649,7 @@ int unregister_fprobe(struct fprobe *fp)
- }
- del_fprobe_hash(fp);
-
-- if (count)
-- fprobe_graph_remove_ips(addrs, count);
-+ fprobe_graph_remove_ips(addrs, count);
-
- kfree_rcu(hlist_array, rcu);
- fp->hlist_array = NULL;
dt-bindings-iio-dac-adi-axi-adc-fix-ad7606-pwm-names.patch
iio-adc-ad7606-fix-wrong-scale-available.patch
kbuild-hdrcheck-fix-cross-build-with-clang.patch
-arm64-kconfig-remove-selecting-replaced-have_function_graph_retval.patch
-fprobe-always-unregister-fgraph-function-from-ops.patch
-fprobe-fix-accounting-of-when-to-unregister-from-function-graph.patch
alsa-hda-realtek-fix-incorrect-is_reachable-usage.patch
nvme-tcp-fix-a-c2htermreq-error-message.patch