perf debug: Avoid stack overflow in recursive error message
authorIan Rogers <irogers@google.com>
Fri, 28 Feb 2025 22:22:58 +0000 (14:22 -0800)
committerNamhyung Kim <namhyung@kernel.org>
Wed, 12 Mar 2025 01:55:37 +0000 (18:55 -0700)
In debug_file, pr_warning_once is called on error. As that function
calls debug_file the function will yield a stack overflow. Switch the
location of the call so the recursion is avoided.

Reviewed-by: Howard Chu <howardchu95@gmail.com>
Signed-off-by: Ian Rogers <irogers@google.com>
Reviewed-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Link: https://lore.kernel.org/r/20250228222308.626803-2-irogers@google.com
Fixes: ec49230cf6dda704 ("perf debug: Expose debug file")
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/util/debug.c

index 995f6bb05b5f88d9f1548f19419e566cdfbb2541..f9ef7d045c92e73cf084d0a25ed9407eebcacd0f 100644 (file)
@@ -46,8 +46,8 @@ int debug_type_profile;
 FILE *debug_file(void)
 {
        if (!_debug_file) {
-               pr_warning_once("debug_file not set");
                debug_set_file(stderr);
+               pr_warning_once("debug_file not set");
        }
        return _debug_file;
 }