]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
perf ui browser hists: Set actions->thread before calling do_zoom_thread()
authorArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 10 Apr 2025 00:58:19 +0000 (21:58 -0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 27 Jun 2025 10:04:05 +0000 (11:04 +0100)
[ Upstream commit 1741189d843a1d5ef38538bc52a3760e2e46cb2e ]

In 7cecb7fe8388d5c3 ("perf hists: Move sort__has_comm into struct
perf_hpp_list") it assumes that act->thread is set prior to calling
do_zoom_thread().

This doesn't happen when we use ESC or the Left arrow key to Zoom out of
a specific thread, making this operation not to work and we get stuck
into the thread zoom.

In 6422184b087ff435 ("perf hists browser: Simplify zooming code using
pstack_peek()") it says no need to set actions->thread, and at that
point that was true, but in 7cecb7fe8388d5c3 a actions->thread == NULL
check was added before the zoom out of thread could kick in.

We can zoom out using the alternative 't' thread zoom toggle hotkey to
finally set actions->thread before calling do_zoom_thread() and zoom
out, but lets also fix the ESC/Zoom out of thread case.

Fixes: 7cecb7fe8388d5c3 ("perf hists: Move sort__has_comm into struct perf_hpp_list")
Reported-by: Ingo Molnar <mingo@kernel.org>
Tested-by: Ingo Molnar <mingo@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: James Clark <james.clark@linaro.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/r/Z_TYux5fUg2pW-pF@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
tools/perf/ui/browsers/hists.c

index f2586e46d53e8dc9254a65f22bed4422cfb9304d..19e79e159996aa70fb3243aa00fe3e76ddf2558b 100644 (file)
@@ -3241,10 +3241,10 @@ do_hotkey:               // key came straight from options ui__popup_menu()
                                /*
                                 * No need to set actions->dso here since
                                 * it's just to remove the current filter.
-                                * Ditto for thread below.
                                 */
                                do_zoom_dso(browser, actions);
                        } else if (top == &browser->hists->thread_filter) {
+                               actions->thread = thread;
                                do_zoom_thread(browser, actions);
                        } else if (top == &browser->hists->socket_filter) {
                                do_zoom_socket(browser, actions);