ftrace: Fix s390 breakage from sorting mcount tables
The latest merge of the tracing tree sorts the mcount table at build time. But s390 appears to do things differently (like always) and replaces the sorted table back to the original unsorted one. As the ftrace algorithm depends on it being sorted, bad things happen when it is not, and s390 experienced those bad things. Add a new config to tell the boot if the mcount table is sorted or not, and allow s390 to opt out of it. -----BEGIN PGP SIGNATURE----- iIoEABYIADIWIQRRSw7ePDh/lE+zeZMp5XQQmuv6qgUCYezl+RQccm9zdGVkdEBn b29kbWlzLm9yZwAKCRAp5XQQmuv6qs5wAQCO2K1uB+XI4rown8zKLrGxOiFIXChi Ds5GKJwYlcOnwQEAqKK3mAodmMy6ydbeY1OY1IDdTkOCAd752FDIe1Qozws= =aF8W -----END PGP SIGNATURE----- Merge tag 'trace-v5.17-3' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace Pull ftrace fix from Steven Rostedt: "Fix s390 breakage from sorting mcount tables. The latest merge of the tracing tree sorts the mcount table at build time. But s390 appears to do things differently (like always) and replaces the sorted table back to the original unsorted one. As the ftrace algorithm depends on it being sorted, bad things happen when it is not, and s390 experienced those bad things. Add a new config to tell the boot if the mcount table is sorted or not, and allow s390 to opt out of it" * tag 'trace-v5.17-3' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: ftrace: Fix assuming build time sort works for s390
This commit is contained in:
commit
67bfce0e01
|
@ -70,6 +70,13 @@ config HAVE_C_RECORDMCOUNT
|
|||
help
|
||||
C version of recordmcount available?
|
||||
|
||||
config BUILDTIME_MCOUNT_SORT
|
||||
bool
|
||||
default y
|
||||
depends on BUILDTIME_TABLE_SORT && !S390
|
||||
help
|
||||
Sort the mcount_loc section at build time.
|
||||
|
||||
config TRACER_MAX_TRACE
|
||||
bool
|
||||
|
||||
|
@ -918,7 +925,7 @@ config EVENT_TRACE_TEST_SYSCALLS
|
|||
config FTRACE_SORT_STARTUP_TEST
|
||||
bool "Verify compile time sorting of ftrace functions"
|
||||
depends on DYNAMIC_FTRACE
|
||||
depends on BUILDTIME_TABLE_SORT
|
||||
depends on BUILDTIME_MCOUNT_SORT
|
||||
help
|
||||
Sorting of the mcount_loc sections that is used to find the
|
||||
where the ftrace knows where to patch functions for tracing
|
||||
|
|
|
@ -6435,10 +6435,10 @@ static int ftrace_process_locs(struct module *mod,
|
|||
|
||||
/*
|
||||
* Sorting mcount in vmlinux at build time depend on
|
||||
* CONFIG_BUILDTIME_TABLE_SORT, while mcount loc in
|
||||
* CONFIG_BUILDTIME_MCOUNT_SORT, while mcount loc in
|
||||
* modules can not be sorted at build time.
|
||||
*/
|
||||
if (!IS_ENABLED(CONFIG_BUILDTIME_TABLE_SORT) || mod) {
|
||||
if (!IS_ENABLED(CONFIG_BUILDTIME_MCOUNT_SORT) || mod) {
|
||||
sort(start, count, sizeof(*start),
|
||||
ftrace_cmp_ips, NULL);
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue