Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'perf-tools-fixes-for-v6.17-2025-09-16' of git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools

Pull perf tools fixes from Namhyung Kim:
"A small set of fixes for crashes in different commands and conditions"

* tag 'perf-tools-fixes-for-v6.17-2025-09-16' of git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools:
perf maps: Ensure kmap is set up for all inserts
perf lock: Provide a host_env for session new
perf subcmd: avoid crash in exclude_cmds when excludes is empty

+14 -5
+3
tools/lib/subcmd/help.c
··· 75 75 size_t ci, cj, ei; 76 76 int cmp; 77 77 78 + if (!excludes->cnt) 79 + return; 80 + 78 81 ci = cj = ei = 0; 79 82 while (ci < cmds->cnt && ei < excludes->cnt) { 80 83 cmp = strcmp(cmds->names[ci]->name, excludes->names[ei]->name);
+6 -1
tools/perf/builtin-lock.c
··· 2009 2009 .owner = show_lock_owner, 2010 2010 .cgroups = RB_ROOT, 2011 2011 }; 2012 + struct perf_env host_env; 2012 2013 2013 2014 lockhash_table = calloc(LOCKHASH_SIZE, sizeof(*lockhash_table)); 2014 2015 if (!lockhash_table) ··· 2025 2024 eops.mmap = perf_event__process_mmap; 2026 2025 eops.tracing_data = perf_event__process_tracing_data; 2027 2026 2028 - session = perf_session__new(use_bpf ? NULL : &data, &eops); 2027 + perf_env__init(&host_env); 2028 + session = __perf_session__new(use_bpf ? NULL : &data, &eops, 2029 + /*trace_event_repipe=*/false, &host_env); 2030 + 2029 2031 if (IS_ERR(session)) { 2030 2032 pr_err("Initializing perf session failed\n"); 2031 2033 err = PTR_ERR(session); ··· 2146 2142 evlist__delete(con.evlist); 2147 2143 lock_contention_finish(&con); 2148 2144 perf_session__delete(session); 2145 + perf_env__exit(&host_env); 2149 2146 zfree(&lockhash_table); 2150 2147 return err; 2151 2148 }
+5 -4
tools/perf/util/maps.c
··· 477 477 } 478 478 /* Insert the value at the end. */ 479 479 maps_by_address[nr_maps] = map__get(new); 480 + map__set_kmap_maps(new, maps); 480 481 if (maps_by_name) 481 482 maps_by_name[nr_maps] = map__get(new); 482 483 ··· 502 501 } 503 502 if (map__end(new) < map__start(new)) 504 503 RC_CHK_ACCESS(maps)->ends_broken = true; 505 - 506 - map__set_kmap_maps(new, maps); 507 504 508 505 return 0; 509 506 } ··· 890 891 if (before) { 891 892 map__put(maps_by_address[i]); 892 893 maps_by_address[i] = before; 894 + map__set_kmap_maps(before, maps); 893 895 894 896 if (maps_by_name) { 895 897 map__put(maps_by_name[ni]); ··· 918 918 */ 919 919 map__put(maps_by_address[i]); 920 920 maps_by_address[i] = map__get(new); 921 + map__set_kmap_maps(new, maps); 921 922 922 923 if (maps_by_name) { 923 924 map__put(maps_by_name[ni]); ··· 943 942 */ 944 943 map__put(maps_by_address[i]); 945 944 maps_by_address[i] = map__get(new); 945 + map__set_kmap_maps(new, maps); 946 946 947 947 if (maps_by_name) { 948 948 map__put(maps_by_name[ni]); 949 949 maps_by_name[ni] = map__get(new); 950 950 } 951 - 952 - map__set_kmap_maps(new, maps); 953 951 954 952 check_invariants(maps); 955 953 return err; ··· 1019 1019 err = unwind__prepare_access(dest, new, NULL); 1020 1020 if (!err) { 1021 1021 dest_maps_by_address[i] = new; 1022 + map__set_kmap_maps(new, dest); 1022 1023 if (dest_maps_by_name) 1023 1024 dest_maps_by_name[i] = map__get(new); 1024 1025 RC_CHK_ACCESS(dest)->nr_maps = i + 1;