From: Greg Kroah-Hartman Date: Thu, 20 Feb 2025 10:37:39 +0000 (+0100) Subject: drop a bunch of perf patches from 6.1.y queue X-Git-Tag: v6.1.129~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4764060de34caaf0bb121ea6a24c56a40a98fcb9;p=thirdparty%2Fkernel%2Fstable-queue.git drop a bunch of perf patches from 6.1.y queue --- diff --git a/queue-6.1/perf-bench-fix-undefined-behavior-in-cmpworker.patch b/queue-6.1/perf-bench-fix-undefined-behavior-in-cmpworker.patch deleted file mode 100644 index 1b210f1a98..0000000000 --- a/queue-6.1/perf-bench-fix-undefined-behavior-in-cmpworker.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 62892e77b8a64b9dc0e1da75980aa145347b6820 Mon Sep 17 00:00:00 2001 -From: Kuan-Wei Chiu -Date: Thu, 16 Jan 2025 19:08:42 +0800 -Subject: perf bench: Fix undefined behavior in cmpworker() - -From: Kuan-Wei Chiu - -commit 62892e77b8a64b9dc0e1da75980aa145347b6820 upstream. - -The comparison function cmpworker() violates the C standard's -requirements for qsort() comparison functions, which mandate symmetry -and transitivity: - -Symmetry: If x < y, then y > x. -Transitivity: If x < y and y < z, then x < z. - -In its current implementation, cmpworker() incorrectly returns 0 when -w1->tid < w2->tid, which breaks both symmetry and transitivity. This -violation causes undefined behavior, potentially leading to issues such -as memory corruption in glibc [1]. - -Fix the issue by returning -1 when w1->tid < w2->tid, ensuring -compliance with the C standard and preventing undefined behavior. - -Link: https://www.qualys.com/2024/01/30/qsort.txt [1] -Fixes: 121dd9ea0116 ("perf bench: Add epoll parallel epoll_wait benchmark") -Cc: stable@vger.kernel.org -Signed-off-by: Kuan-Wei Chiu -Reviewed-by: James Clark -Link: https://lore.kernel.org/r/20250116110842.4087530-1-visitorckw@gmail.com -Signed-off-by: Namhyung Kim -Signed-off-by: Greg Kroah-Hartman ---- - tools/perf/bench/epoll-wait.c | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - ---- a/tools/perf/bench/epoll-wait.c -+++ b/tools/perf/bench/epoll-wait.c -@@ -420,7 +420,12 @@ static int cmpworker(const void *p1, con - - struct worker *w1 = (struct worker *) p1; - struct worker *w2 = (struct worker *) p2; -- return w1->tid > w2->tid; -+ -+ if (w1->tid > w2->tid) -+ return 1; -+ if (w1->tid < w2->tid) -+ return -1; -+ return 0; - } - - int bench_epoll_wait(int argc, const char **argv) diff --git a/queue-6.1/perf-bpf-fix-two-memory-leakages-when-calling-perf_e.patch b/queue-6.1/perf-bpf-fix-two-memory-leakages-when-calling-perf_e.patch deleted file mode 100644 index 4bc6fda813..0000000000 --- a/queue-6.1/perf-bpf-fix-two-memory-leakages-when-calling-perf_e.patch +++ /dev/null @@ -1,105 +0,0 @@ -From 1cb46c5d7b0058d0d0ef5bdddfb52612184f1560 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 5 Dec 2024 16:45:00 +0800 -Subject: perf bpf: Fix two memory leakages when calling - perf_env__insert_bpf_prog_info() - -From: Zhongqiu Han - -[ Upstream commit 03edb7020bb920f1935c3f30acad0bb27fdb99af ] - -If perf_env__insert_bpf_prog_info() returns false due to a duplicate bpf -prog info node insertion, the temporary info_node and info_linear memory -will leak. Add a check to ensure the memory is freed if the function -returns false. - -Fixes: d56354dc49091e33 ("perf tools: Save bpf_prog_info and BTF of new BPF programs") -Reviewed-by: Namhyung Kim -Signed-off-by: Zhongqiu Han -Cc: Adrian Hunter -Cc: Alexander Shishkin -Cc: Ian Rogers -Cc: Ingo Molnar -Cc: James Clark -Cc: Jiri Olsa -Cc: Kan Liang -Cc: Mark Rutland -Cc: Peter Zijlstra -Cc: Song Liu -Cc: Yicong Yang -Link: https://lore.kernel.org/r/20241205084500.823660-4-quic_zhonhan@quicinc.com -Signed-off-by: Arnaldo Carvalho de Melo -Signed-off-by: Sasha Levin ---- - tools/perf/util/bpf-event.c | 10 ++++++++-- - tools/perf/util/env.c | 8 ++++++-- - tools/perf/util/env.h | 2 +- - 3 files changed, 15 insertions(+), 5 deletions(-) - -diff --git a/tools/perf/util/bpf-event.c b/tools/perf/util/bpf-event.c -index 91c7bfa82a50a..6cc1b9adc65c6 100644 ---- a/tools/perf/util/bpf-event.c -+++ b/tools/perf/util/bpf-event.c -@@ -352,7 +352,10 @@ static int perf_event__synthesize_one_bpf_prog(struct perf_session *session, - } - - info_node->info_linear = info_linear; -- perf_env__insert_bpf_prog_info(env, info_node); -+ if (!perf_env__insert_bpf_prog_info(env, info_node)) { -+ free(info_linear); -+ free(info_node); -+ } - info_linear = NULL; - - /* -@@ -540,7 +543,10 @@ static void perf_env__add_bpf_info(struct perf_env *env, u32 id) - info_node = malloc(sizeof(struct bpf_prog_info_node)); - if (info_node) { - info_node->info_linear = info_linear; -- perf_env__insert_bpf_prog_info(env, info_node); -+ if (!perf_env__insert_bpf_prog_info(env, info_node)) { -+ free(info_linear); -+ free(info_node); -+ } - } else - free(info_linear); - -diff --git a/tools/perf/util/env.c b/tools/perf/util/env.c -index a0393f9c5fda7..fa08f82f88e7a 100644 ---- a/tools/perf/util/env.c -+++ b/tools/perf/util/env.c -@@ -19,12 +19,16 @@ struct perf_env perf_env; - #include "bpf-utils.h" - #include - --void perf_env__insert_bpf_prog_info(struct perf_env *env, -+bool perf_env__insert_bpf_prog_info(struct perf_env *env, - struct bpf_prog_info_node *info_node) - { -+ bool ret; -+ - down_write(&env->bpf_progs.lock); -- __perf_env__insert_bpf_prog_info(env, info_node); -+ ret = __perf_env__insert_bpf_prog_info(env, info_node); - up_write(&env->bpf_progs.lock); -+ -+ return ret; - } - - bool __perf_env__insert_bpf_prog_info(struct perf_env *env, struct bpf_prog_info_node *info_node) -diff --git a/tools/perf/util/env.h b/tools/perf/util/env.h -index 7d1360ff79fd8..bc2d0ef351997 100644 ---- a/tools/perf/util/env.h -+++ b/tools/perf/util/env.h -@@ -166,7 +166,7 @@ int perf_env__nr_cpus_avail(struct perf_env *env); - void perf_env__init(struct perf_env *env); - bool __perf_env__insert_bpf_prog_info(struct perf_env *env, - struct bpf_prog_info_node *info_node); --void perf_env__insert_bpf_prog_info(struct perf_env *env, -+bool perf_env__insert_bpf_prog_info(struct perf_env *env, - struct bpf_prog_info_node *info_node); - struct bpf_prog_info_node *perf_env__find_bpf_prog_info(struct perf_env *env, - __u32 prog_id); --- -2.39.5 - diff --git a/queue-6.1/perf-header-fix-one-memory-leakage-in-process_bpf_bt.patch b/queue-6.1/perf-header-fix-one-memory-leakage-in-process_bpf_bt.patch deleted file mode 100644 index 49308f6e75..0000000000 --- a/queue-6.1/perf-header-fix-one-memory-leakage-in-process_bpf_bt.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 20db316d87f44a522782c521228d0508ecd756da Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 5 Dec 2024 16:44:58 +0800 -Subject: perf header: Fix one memory leakage in process_bpf_btf() - -From: Zhongqiu Han - -[ Upstream commit 875d22980a062521beed7b5df71fb13a1af15d83 ] - -If __perf_env__insert_btf() returns false due to a duplicate btf node -insertion, the temporary node will leak. Add a check to ensure the memory -is freed if the function returns false. - -Fixes: a70a1123174ab592 ("perf bpf: Save BTF information as headers to perf.data") -Reviewed-by: Namhyung Kim -Signed-off-by: Zhongqiu Han -Cc: Adrian Hunter -Cc: Alexander Shishkin -Cc: Ian Rogers -Cc: Ingo Molnar -Cc: James Clark -Cc: Jiri Olsa -Cc: Kan Liang -Cc: Mark Rutland -Cc: Peter Zijlstra -Cc: Song Liu -Cc: Yicong Yang -Link: https://lore.kernel.org/r/20241205084500.823660-2-quic_zhonhan@quicinc.com -Signed-off-by: Arnaldo Carvalho de Melo -Signed-off-by: Sasha Levin ---- - tools/perf/util/header.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c -index b2b0293567f07..c4c8a04f3acad 100644 ---- a/tools/perf/util/header.c -+++ b/tools/perf/util/header.c -@@ -3183,7 +3183,8 @@ static int process_bpf_btf(struct feat_fd *ff, void *data __maybe_unused) - if (__do_read(ff, node->data, data_size)) - goto out; - -- __perf_env__insert_btf(env, node); -+ if (!__perf_env__insert_btf(env, node)) -+ free(node); - node = NULL; - } - --- -2.39.5 - diff --git a/queue-6.1/perf-header-fix-one-memory-leakage-in-process_bpf_pr.patch b/queue-6.1/perf-header-fix-one-memory-leakage-in-process_bpf_pr.patch deleted file mode 100644 index 71744965c5..0000000000 --- a/queue-6.1/perf-header-fix-one-memory-leakage-in-process_bpf_pr.patch +++ /dev/null @@ -1,99 +0,0 @@ -From e8dfc951682d02f9012e43493830f27f921e4257 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 5 Dec 2024 16:44:59 +0800 -Subject: perf header: Fix one memory leakage in process_bpf_prog_info() - -From: Zhongqiu Han - -[ Upstream commit a7da6c7030e1aec32f0a41c7b4fa70ec96042019 ] - -Function __perf_env__insert_bpf_prog_info() will return without inserting -bpf prog info node into perf env again due to a duplicate bpf prog info -node insertion, causing the temporary info_linear and info_node memory to -leak. Modify the return type of this function to bool and add a check to -ensure the memory is freed if the function returns false. - -Fixes: 606f972b1361f477 ("perf bpf: Save bpf_prog_info information as headers to perf.data") -Reviewed-by: Namhyung Kim -Signed-off-by: Zhongqiu Han -Cc: Adrian Hunter -Cc: Alexander Shishkin -Cc: Ian Rogers -Cc: Ingo Molnar -Cc: James Clark -Cc: Jiri Olsa -Cc: Kan Liang -Cc: Mark Rutland -Cc: Peter Zijlstra -Cc: Song Liu -Cc: Yicong Yang -Link: https://lore.kernel.org/r/20241205084500.823660-3-quic_zhonhan@quicinc.com -Signed-off-by: Arnaldo Carvalho de Melo -Signed-off-by: Sasha Levin ---- - tools/perf/util/env.c | 5 +++-- - tools/perf/util/env.h | 2 +- - tools/perf/util/header.c | 5 ++++- - 3 files changed, 8 insertions(+), 4 deletions(-) - -diff --git a/tools/perf/util/env.c b/tools/perf/util/env.c -index 5d878bae7d9a5..a0393f9c5fda7 100644 ---- a/tools/perf/util/env.c -+++ b/tools/perf/util/env.c -@@ -27,7 +27,7 @@ void perf_env__insert_bpf_prog_info(struct perf_env *env, - up_write(&env->bpf_progs.lock); - } - --void __perf_env__insert_bpf_prog_info(struct perf_env *env, struct bpf_prog_info_node *info_node) -+bool __perf_env__insert_bpf_prog_info(struct perf_env *env, struct bpf_prog_info_node *info_node) - { - __u32 prog_id = info_node->info_linear->info.id; - struct bpf_prog_info_node *node; -@@ -45,13 +45,14 @@ void __perf_env__insert_bpf_prog_info(struct perf_env *env, struct bpf_prog_info - p = &(*p)->rb_right; - } else { - pr_debug("duplicated bpf prog info %u\n", prog_id); -- return; -+ return false; - } - } - - rb_link_node(&info_node->rb_node, parent, p); - rb_insert_color(&info_node->rb_node, &env->bpf_progs.infos); - env->bpf_progs.infos_cnt++; -+ return true; - } - - struct bpf_prog_info_node *perf_env__find_bpf_prog_info(struct perf_env *env, -diff --git a/tools/perf/util/env.h b/tools/perf/util/env.h -index 359eff51cb85b..7d1360ff79fd8 100644 ---- a/tools/perf/util/env.h -+++ b/tools/perf/util/env.h -@@ -164,7 +164,7 @@ const char *perf_env__raw_arch(struct perf_env *env); - int perf_env__nr_cpus_avail(struct perf_env *env); - - void perf_env__init(struct perf_env *env); --void __perf_env__insert_bpf_prog_info(struct perf_env *env, -+bool __perf_env__insert_bpf_prog_info(struct perf_env *env, - struct bpf_prog_info_node *info_node); - void perf_env__insert_bpf_prog_info(struct perf_env *env, - struct bpf_prog_info_node *info_node); -diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c -index c4c8a04f3acad..f0885d9781cf2 100644 ---- a/tools/perf/util/header.c -+++ b/tools/perf/util/header.c -@@ -3136,7 +3136,10 @@ static int process_bpf_prog_info(struct feat_fd *ff, void *data __maybe_unused) - /* after reading from file, translate offset to address */ - bpil_offs_to_addr(info_linear); - info_node->info_linear = info_linear; -- __perf_env__insert_bpf_prog_info(env, info_node); -+ if (!__perf_env__insert_bpf_prog_info(env, info_node)) { -+ free(info_linear); -+ free(info_node); -+ } - } - - up_write(&env->bpf_progs.lock); --- -2.39.5 - diff --git a/queue-6.1/perf-namespaces-fixup-the-nsinfo__in_pidns-return-ty.patch b/queue-6.1/perf-namespaces-fixup-the-nsinfo__in_pidns-return-ty.patch deleted file mode 100644 index 3b0658ee4f..0000000000 --- a/queue-6.1/perf-namespaces-fixup-the-nsinfo__in_pidns-return-ty.patch +++ /dev/null @@ -1,64 +0,0 @@ -From 7b5a08abd943a4f5c10e267f6e73f9132c56c504 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Fri, 6 Dec 2024 17:48:28 -0300 -Subject: perf namespaces: Fixup the nsinfo__in_pidns() return type, its bool - -From: Arnaldo Carvalho de Melo - -[ Upstream commit 64a7617efd5ae1d57a75e464d7134eec947c3fe3 ] - -When adding support for refconunt checking a cut'n'paste made this -function, that is just an accessor to a bool member of 'struct nsinfo', -return a pid_t, when that member is a boolean, fix it. - -Fixes: bcaf0a97858de7ab ("perf namespaces: Add functions to access nsinfo") -Reported-by: Francesco Nigro -Reported-by: Ilan Green -Cc: Adrian Hunter -Cc: Clark Williams -Cc: Ian Rogers -Cc: Ingo Molnar -Cc: James Clark -Cc: Jiri Olsa -Cc: Kan Liang -Cc: Namhyung Kim -Cc: Stephane Eranian -Cc: Thomas Gleixner -Cc: Yonatan Goldschmidt -Link: https://lore.kernel.org/r/20241206204828.507527-6-acme@kernel.org -Signed-off-by: Arnaldo Carvalho de Melo -Signed-off-by: Sasha Levin ---- - tools/perf/util/namespaces.c | 2 +- - tools/perf/util/namespaces.h | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/tools/perf/util/namespaces.c b/tools/perf/util/namespaces.c -index fe59c2b9cd624..33cf78a4a28b5 100644 ---- a/tools/perf/util/namespaces.c -+++ b/tools/perf/util/namespaces.c -@@ -237,7 +237,7 @@ pid_t nsinfo__pid(const struct nsinfo *nsi) - return nsi->pid; - } - --pid_t nsinfo__in_pidns(const struct nsinfo *nsi) -+bool nsinfo__in_pidns(const struct nsinfo *nsi) - { - return nsi->in_pidns; - } -diff --git a/tools/perf/util/namespaces.h b/tools/perf/util/namespaces.h -index 62a9145a6ffba..c108972a97ef5 100644 ---- a/tools/perf/util/namespaces.h -+++ b/tools/perf/util/namespaces.h -@@ -57,7 +57,7 @@ void nsinfo__clear_need_setns(struct nsinfo *nsi); - pid_t nsinfo__tgid(const struct nsinfo *nsi); - pid_t nsinfo__nstgid(const struct nsinfo *nsi); - pid_t nsinfo__pid(const struct nsinfo *nsi); --pid_t nsinfo__in_pidns(const struct nsinfo *nsi); -+bool nsinfo__in_pidns(const struct nsinfo *nsi); - void nsinfo__set_in_pidns(struct nsinfo *nsi); - - void nsinfo__mountns_enter(struct nsinfo *nsi, struct nscookie *nc); --- -2.39.5 - diff --git a/queue-6.1/perf-namespaces-introduce-nsinfo__set_in_pidns.patch b/queue-6.1/perf-namespaces-introduce-nsinfo__set_in_pidns.patch deleted file mode 100644 index c96a1ed0fa..0000000000 --- a/queue-6.1/perf-namespaces-introduce-nsinfo__set_in_pidns.patch +++ /dev/null @@ -1,86 +0,0 @@ -From 303bfc857a4c9fd81b32561eb1317a60d6840639 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Fri, 6 Dec 2024 17:48:26 -0300 -Subject: perf namespaces: Introduce nsinfo__set_in_pidns() - -From: Arnaldo Carvalho de Melo - -[ Upstream commit 9c6a585d257f6845731f4e36b45fe42b5c3162f5 ] - -When we're processing a perf.data file we will, for every thread in that -file do a machine__findnew_thread(machine, pid, tid) that when that pid -is seen for the first time will create a 'struct thread' representing -it. - -That in turn will call nsinfo__new() -> nsinfo__init() and there it will -assume we're running live, which is wrong and will need to be addressed -in a followup patch. - -The nsinfo__new() assumes that if we can't access that thread it has -already finished and will ignore the -1 return from nsinfo__init(), just -taking notes to avoid trying to enter in that namespace, since it isn't -there anymore, a race. - -When doing this from 'perf inject', tho, we can fill in parts of that -nsinfo from what we get from the PERF_RECORD_MMAP2 (pid, tid) and in the -jitdump file name, that has the form of jit-.dump. - -So if the pid in the jitdump file name is not the one in the -PERF_RECORD_MMAP2, we can assume that its the pid of the process -_inside_ the namespace, and that perf was runing outside that namespace. - -This will be done in the following patch. - -Reported-by: Francesco Nigro -Reported-by: Ilan Green -Cc: Adrian Hunter -Cc: Clark Williams -Cc: Ian Rogers -Cc: Ingo Molnar -Cc: James Clark -Cc: Jiri Olsa -Cc: Kan Liang -Cc: Namhyung Kim -Cc: Stephane Eranian -Cc: Thomas Gleixner -Cc: Yonatan Goldschmidt -Link: https://lore.kernel.org/r/20241206204828.507527-4-acme@kernel.org -Signed-off-by: Arnaldo Carvalho de Melo -Stable-dep-of: 64a7617efd5a ("perf namespaces: Fixup the nsinfo__in_pidns() return type, its bool") -Signed-off-by: Sasha Levin ---- - tools/perf/util/namespaces.c | 5 +++++ - tools/perf/util/namespaces.h | 1 + - 2 files changed, 6 insertions(+) - -diff --git a/tools/perf/util/namespaces.c b/tools/perf/util/namespaces.c -index dd536220cdb9e..fe59c2b9cd624 100644 ---- a/tools/perf/util/namespaces.c -+++ b/tools/perf/util/namespaces.c -@@ -242,6 +242,11 @@ pid_t nsinfo__in_pidns(const struct nsinfo *nsi) - return nsi->in_pidns; - } - -+void nsinfo__set_in_pidns(struct nsinfo *nsi) -+{ -+ RC_CHK_ACCESS(nsi)->in_pidns = true; -+} -+ - void nsinfo__mountns_enter(struct nsinfo *nsi, - struct nscookie *nc) - { -diff --git a/tools/perf/util/namespaces.h b/tools/perf/util/namespaces.h -index 567829262c428..62a9145a6ffba 100644 ---- a/tools/perf/util/namespaces.h -+++ b/tools/perf/util/namespaces.h -@@ -58,6 +58,7 @@ pid_t nsinfo__tgid(const struct nsinfo *nsi); - pid_t nsinfo__nstgid(const struct nsinfo *nsi); - pid_t nsinfo__pid(const struct nsinfo *nsi); - pid_t nsinfo__in_pidns(const struct nsinfo *nsi); -+void nsinfo__set_in_pidns(struct nsinfo *nsi); - - void nsinfo__mountns_enter(struct nsinfo *nsi, struct nscookie *nc); - void nsinfo__mountns_exit(struct nscookie *nc); --- -2.39.5 - diff --git a/queue-6.1/perf-report-fix-misleading-help-message-about-demang.patch b/queue-6.1/perf-report-fix-misleading-help-message-about-demang.patch deleted file mode 100644 index 1bfabb11d6..0000000000 --- a/queue-6.1/perf-report-fix-misleading-help-message-about-demang.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 253afbb89e241691c6d8602fd945340f74b33a3a Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 9 Jan 2025 23:22:19 +0800 -Subject: perf report: Fix misleading help message about --demangle - -From: Jiachen Zhang - -[ Upstream commit ac0ac75189a4d6a29a2765a7adbb62bc6cc650c7 ] - -The wrong help message may mislead users. This commit fixes it. - -Fixes: 328ccdace8855289 ("perf report: Add --no-demangle option") -Reviewed-by: Namhyung Kim -Signed-off-by: Jiachen Zhang -Cc: Adrian Hunter -Cc: Alexander Shishkin -Cc: Ian Rogers -Cc: Ingo Molnar -Cc: Jiri Olsa -Cc: Kan Liang -Cc: Mark Rutland -Cc: Namhyung Kim -Cc: Peter Zijlstra -Link: https://lore.kernel.org/r/20250109152220.1869581-1-me@jcix.top -Signed-off-by: Arnaldo Carvalho de Melo -Signed-off-by: Sasha Levin ---- - tools/perf/builtin-report.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c -index 155f119b3db5c..64e38a81bc0a0 100644 ---- a/tools/perf/builtin-report.c -+++ b/tools/perf/builtin-report.c -@@ -1335,7 +1335,7 @@ int cmd_report(int argc, const char **argv) - OPT_STRING(0, "objdump", &report.annotation_opts.objdump_path, "path", - "objdump binary to use for disassembly and annotations"), - OPT_BOOLEAN(0, "demangle", &symbol_conf.demangle, -- "Disable symbol demangling"), -+ "Symbol demangling. Enabled by default, use --no-demangle to disable."), - OPT_BOOLEAN(0, "demangle-kernel", &symbol_conf.demangle_kernel, - "Enable kernel symbol demangling"), - OPT_BOOLEAN(0, "mem-mode", &report.mem_mode, "mem access profile"), --- -2.39.5 - diff --git a/queue-6.1/perf-top-don-t-complain-about-lack-of-vmlinux-when-n.patch b/queue-6.1/perf-top-don-t-complain-about-lack-of-vmlinux-when-n.patch deleted file mode 100644 index b423df2a9d..0000000000 --- a/queue-6.1/perf-top-don-t-complain-about-lack-of-vmlinux-when-n.patch +++ /dev/null @@ -1,64 +0,0 @@ -From 9dd7ca0f76572d327e4f222aff1b730515a7ff73 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 2 Jan 2025 16:50:39 -0300 -Subject: perf top: Don't complain about lack of vmlinux when not resolving - some kernel samples - -From: Arnaldo Carvalho de Melo - -[ Upstream commit 058b38ccd2af9e5c95590b018e8425fa148d7aca ] - -Recently we got a case where a kernel sample wasn't being resolved due -to a bug that was not setting the end address on kernel functions -implemented in assembly (see Link: tag), and then those were not being -found by machine__resolve() -> map__find_symbol(). - -So we ended up with: - - # perf top --stdio - PerfTop: 0 irqs/s kernel: 0% exact: 0% lost: 0/0 drop: 0/0 [cycles/P] - ----------------------------------------------------------------------- - - Warning: - A vmlinux file was not found. - Kernel samples will not be resolved. - ^Z - [1]+ Stopped perf top --stdio - # - -But then resolving all other kernel symbols. - -So just fixup the logic to only print that warning when there are no -symbols in the kernel map. - -Fixes: d88205db9caa0e9d ("perf dso: Add dso__has_symbols() method") -Reviewed-by: Namhyung Kim -Cc: Adrian Hunter -Cc: Ian Rogers -Cc: Christophe Leroy -Cc: James Clark -Cc: Jiri Olsa -Cc: Kan Liang -Link: https://lore.kernel.org/lkml/Z3buKhcCsZi3_aGb@x1 -Signed-off-by: Arnaldo Carvalho de Melo -Signed-off-by: Sasha Levin ---- - tools/perf/builtin-top.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c -index f9917848cdad0..d24e495062a84 100644 ---- a/tools/perf/builtin-top.c -+++ b/tools/perf/builtin-top.c -@@ -807,7 +807,7 @@ static void perf_event__process_sample(struct perf_tool *tool, - * invalid --vmlinux ;-) - */ - if (!machine->kptr_restrict_warned && !top->vmlinux_warned && -- __map__is_kernel(al.map) && map__has_symbols(al.map)) { -+ __map__is_kernel(al.map) && !map__has_symbols(al.map)) { - if (symbol_conf.vmlinux_name) { - char serr[256]; - dso__strerror_load(al.map->dso, serr, sizeof(serr)); --- -2.39.5 - diff --git a/queue-6.1/perf-trace-fix-runtime-error-of-index-out-of-bounds.patch b/queue-6.1/perf-trace-fix-runtime-error-of-index-out-of-bounds.patch deleted file mode 100644 index 114bcd9dca..0000000000 --- a/queue-6.1/perf-trace-fix-runtime-error-of-index-out-of-bounds.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 39ad847ae3da86c623f9b5212f52b4a793f23d06 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 21 Jan 2025 18:55:19 -0800 -Subject: perf trace: Fix runtime error of index out of bounds - -From: Howard Chu - -[ Upstream commit c7b87ce0dd10b64b68a0b22cb83bbd556e28fe81 ] - -libtraceevent parses and returns an array of argument fields, sometimes -larger than RAW_SYSCALL_ARGS_NUM (6) because it includes "__syscall_nr", -idx will traverse to index 6 (7th element) whereas sc->fmt->arg holds 6 -elements max, creating an out-of-bounds access. This runtime error is -found by UBsan. The error message: - - $ sudo UBSAN_OPTIONS=print_stacktrace=1 ./perf trace -a --max-events=1 - builtin-trace.c:1966:35: runtime error: index 6 out of bounds for type 'syscall_arg_fmt [6]' - #0 0x5c04956be5fe in syscall__alloc_arg_fmts /home/howard/hw/linux-perf/tools/perf/builtin-trace.c:1966 - #1 0x5c04956c0510 in trace__read_syscall_info /home/howard/hw/linux-perf/tools/perf/builtin-trace.c:2110 - #2 0x5c04956c372b in trace__syscall_info /home/howard/hw/linux-perf/tools/perf/builtin-trace.c:2436 - #3 0x5c04956d2f39 in trace__init_syscalls_bpf_prog_array_maps /home/howard/hw/linux-perf/tools/perf/builtin-trace.c:3897 - #4 0x5c04956d6d25 in trace__run /home/howard/hw/linux-perf/tools/perf/builtin-trace.c:4335 - #5 0x5c04956e112e in cmd_trace /home/howard/hw/linux-perf/tools/perf/builtin-trace.c:5502 - #6 0x5c04956eda7d in run_builtin /home/howard/hw/linux-perf/tools/perf/perf.c:351 - #7 0x5c04956ee0a8 in handle_internal_command /home/howard/hw/linux-perf/tools/perf/perf.c:404 - #8 0x5c04956ee37f in run_argv /home/howard/hw/linux-perf/tools/perf/perf.c:448 - #9 0x5c04956ee8e9 in main /home/howard/hw/linux-perf/tools/perf/perf.c:556 - #10 0x79eb3622a3b7 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 - #11 0x79eb3622a47a in __libc_start_main_impl ../csu/libc-start.c:360 - #12 0x5c04955422d4 in _start (/home/howard/hw/linux-perf/tools/perf/perf+0x4e02d4) (BuildId: 5b6cab2d59e96a4341741765ad6914a4d784dbc6) - - 0.000 ( 0.014 ms): Chrome_ChildIO/117244 write(fd: 238, buf: !, count: 1) = 1 - -Fixes: 5e58fcfaf4c6 ("perf trace: Allow allocating sc->arg_fmt even without the syscall tracepoint") -Signed-off-by: Howard Chu -Link: https://lore.kernel.org/r/20250122025519.361873-1-howardchu95@gmail.com -Signed-off-by: Namhyung Kim -Signed-off-by: Sasha Levin ---- - tools/perf/builtin-trace.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c -index 441655e659c2b..4655e82c81e69 100644 ---- a/tools/perf/builtin-trace.c -+++ b/tools/perf/builtin-trace.c -@@ -1822,8 +1822,12 @@ static int trace__read_syscall_info(struct trace *trace, int id) - return PTR_ERR(sc->tp_format); - } - -+ /* -+ * The tracepoint format contains __syscall_nr field, so it's one more -+ * than the actual number of syscall arguments. -+ */ - if (syscall__alloc_arg_fmts(sc, IS_ERR(sc->tp_format) ? -- RAW_SYSCALL_ARGS_NUM : sc->tp_format->format.nr_fields)) -+ RAW_SYSCALL_ARGS_NUM : sc->tp_format->format.nr_fields - 1)) - return -ENOMEM; - - sc->args = sc->tp_format->format.fields; --- -2.39.5 - diff --git a/queue-6.1/series b/queue-6.1/series index 39ac6e55e5..a14577e102 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -103,9 +103,6 @@ libbpf-don-t-adjust-usdt-semaphore-address-if-.staps.patch tools-testing-selftests-bpf-test_tc_tunnel.sh-fix-wa.patch libbpf-fix-segfault-due-to-libelf-functions-not-sett.patch asoc-sun4i-spdif-add-clock-multiplier-settings.patch -perf-header-fix-one-memory-leakage-in-process_bpf_bt.patch -perf-header-fix-one-memory-leakage-in-process_bpf_pr.patch -perf-bpf-fix-two-memory-leakages-when-calling-perf_e.patch asoc-renesas-rz-ssi-use-only-the-proper-amount-of-di.patch ktest.pl-remove-unused-declarations-in-run_bisect_te.patch crypto-hisilicon-sec2-optimize-the-error-return-proc.patch @@ -113,11 +110,7 @@ crypto-hisilicon-sec2-fix-for-aead-icv-error.patch crypto-hisilicon-sec2-fix-for-aead-invalid-authsize.patch crypto-ixp4xx-fix-of-node-reference-leaks-in-init_ix.patch padata-fix-sysfs-store-callback-check.patch -perf-top-don-t-complain-about-lack-of-vmlinux-when-n.patch -perf-namespaces-introduce-nsinfo__set_in_pidns.patch -perf-namespaces-fixup-the-nsinfo__in_pidns-return-ty.patch asoc-intel-avs-fix-theoretical-infinite-loop.patch -perf-report-fix-misleading-help-message-about-demang.patch pinctrl-stm32-set-default-gpio-line-names-using-pin-.patch pinctrl-stm32-add-check-for-devm_kcalloc.patch pinctrl-stm32-check-devm_kasprintf-returned-value.patch @@ -224,7 +217,6 @@ net-rose-fix-timer-races-against-user-threads.patch net-netdevsim-try-to-close-udp-port-harness-races.patch vxlan-fix-uninit-value-in-vxlan_vnifilter_dump.patch net-davicom-fix-uaf-in-dm9000_drv_remove.patch -perf-trace-fix-runtime-error-of-index-out-of-bounds.patch bgmac-reduce-max-frame-size-to-support-just-mtu-1500.patch net-sh_eth-fix-missing-rtnl-lock-in-suspend-resume-p.patch net-hsr-fix-fill_frame_info-regression-vs-vlan-packe.patch @@ -361,7 +353,6 @@ clk-qcom-gcc-mdm9607-fix-cmd_rcgr-offset-for-blsp1_uart6-rcg.patch clk-qcom-clk-rpmh-prevent-integer-overflow-in-recalc_rate.patch blk-cgroup-fix-class-block_class-s-subsystem-refcount-leakage.patch efi-libstub-use-std-gnu11-to-fix-build-with-gcc-15.patch -perf-bench-fix-undefined-behavior-in-cmpworker.patch scsi-ufs-core-fix-the-high-low_temp-bit-definitions.patch of-correct-child-specifier-used-as-input-of-the-2nd-nexus-node.patch of-fix-of_find_node_opts_by_path-handling-of-alias-path-options.patch