From: Greg Kroah-Hartman Date: Mon, 8 May 2023 05:48:18 +0000 (+0200) Subject: 4.19-stable patches X-Git-Tag: v5.15.111~52 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c7d362ce781414f4ae25c437520c9f8c0774a1f2;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches added patches: perf-auxtrace-fix-address-filter-entire-kernel-size.patch --- diff --git a/queue-4.19/perf-auxtrace-fix-address-filter-entire-kernel-size.patch b/queue-4.19/perf-auxtrace-fix-address-filter-entire-kernel-size.patch new file mode 100644 index 00000000000..5b372e8df7f --- /dev/null +++ b/queue-4.19/perf-auxtrace-fix-address-filter-entire-kernel-size.patch @@ -0,0 +1,65 @@ +From 1f9f33ccf0320be21703d9195dd2b36a1c9a07cb Mon Sep 17 00:00:00 2001 +From: Adrian Hunter +Date: Mon, 3 Apr 2023 18:48:30 +0300 +Subject: perf auxtrace: Fix address filter entire kernel size + +From: Adrian Hunter + +commit 1f9f33ccf0320be21703d9195dd2b36a1c9a07cb upstream. + +kallsyms is not completely in address order. + +In find_entire_kern_cb(), calculate the kernel end from the maximum +address not the last symbol. + +Example: + + Before: + + $ sudo cat /proc/kallsyms | grep ' [twTw] ' | tail -1 + ffffffffc00b8bd0 t bpf_prog_6deef7357e7b4530 [bpf] + $ sudo cat /proc/kallsyms | grep ' [twTw] ' | sort | tail -1 + ffffffffc15e0cc0 t iwl_mvm_exit [iwlmvm] + $ perf.d093603a05aa record -v --kcore -e intel_pt// --filter 'filter *' -- uname |& grep filter + Address filter: filter 0xffffffff93200000/0x2ceba000 + + After: + + $ perf.8fb0f7a01f8e record -v --kcore -e intel_pt// --filter 'filter *' -- uname |& grep filter + Address filter: filter 0xffffffff93200000/0x2e3e2000 + +Fixes: 1b36c03e356936d6 ("perf record: Add support for using symbols in address filters") +Signed-off-by: Adrian Hunter +Cc: Adrian Hunter +Cc: Ian Rogers +Cc: Jiri Olsa +Cc: Namhyung Kim +Cc: stable@vger.kernel.org +Link: https://lore.kernel.org/r/20230403154831.8651-2-adrian.hunter@intel.com +Signed-off-by: Arnaldo Carvalho de Melo +Signed-off-by: Greg Kroah-Hartman +--- + tools/perf/util/auxtrace.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/tools/perf/util/auxtrace.c ++++ b/tools/perf/util/auxtrace.c +@@ -1793,6 +1793,7 @@ static int find_entire_kern_cb(void *arg + char type, u64 start) + { + struct sym_args *args = arg; ++ u64 size; + + if (!kallsyms__is_function(type)) + return 0; +@@ -1802,7 +1803,9 @@ static int find_entire_kern_cb(void *arg + args->start = start; + } + /* Don't know exactly where the kernel ends, so we add a page */ +- args->size = round_up(start, page_size) + page_size - args->start; ++ size = round_up(start, page_size) + page_size - args->start; ++ if (size > args->size) ++ args->size = size; + + return 0; + } diff --git a/queue-4.19/series b/queue-4.19/series index 8837eeb63a9..c20426392df 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -134,3 +134,4 @@ s390-dasd-fix-hanging-blockdevice-after-request-requeue.patch dm-integrity-call-kmem_cache_destroy-in-dm_integrity_init-error-path.patch dm-flakey-fix-a-crash-with-invalid-table-line.patch dm-ioctl-fix-nested-locking-in-table_clear-to-remove-deadlock-concern.patch +perf-auxtrace-fix-address-filter-entire-kernel-size.patch