mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 01:49:46 +00:00
perf evsel: Ensure the fallback message is always written to
The fallback message is unconditionally printed in places like
record__open().
If no fallback is attempted this can lead to printing uninitialized
data, crashes, etc.
Fixes: c0a54341c0 ("perf evsel: Introduce event fallback method")
Signed-off-by: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Howard Chu <howardchu95@gmail.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Clark <james.clark@linaro.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
committed by
Arnaldo Carvalho de Melo
parent
edaeb4bcf1
commit
24937ee839
@@ -3562,7 +3562,7 @@ bool evsel__fallback(struct evsel *evsel, struct target *target, int err,
|
||||
|
||||
/* If event has exclude user then don't exclude kernel. */
|
||||
if (evsel->core.attr.exclude_user)
|
||||
return false;
|
||||
goto no_fallback;
|
||||
|
||||
/* Is there already the separator in the name. */
|
||||
if (strchr(name, '/') ||
|
||||
@@ -3570,7 +3570,7 @@ bool evsel__fallback(struct evsel *evsel, struct target *target, int err,
|
||||
sep = "";
|
||||
|
||||
if (asprintf(&new_name, "%s%su", name, sep) < 0)
|
||||
return false;
|
||||
goto no_fallback;
|
||||
|
||||
free(evsel->name);
|
||||
evsel->name = new_name;
|
||||
@@ -3593,17 +3593,19 @@ bool evsel__fallback(struct evsel *evsel, struct target *target, int err,
|
||||
sep = "";
|
||||
|
||||
if (asprintf(&new_name, "%s%sH", name, sep) < 0)
|
||||
return false;
|
||||
goto no_fallback;
|
||||
|
||||
free(evsel->name);
|
||||
evsel->name = new_name;
|
||||
/* Apple M1 requires exclude_guest */
|
||||
scnprintf(msg, msgsize, "trying to fall back to excluding guest samples");
|
||||
scnprintf(msg, msgsize, "Trying to fall back to excluding guest samples");
|
||||
evsel->core.attr.exclude_guest = 1;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
no_fallback:
|
||||
scnprintf(msg, msgsize, "No fallback found for '%s' for error %d",
|
||||
evsel__name(evsel), err);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user