]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
perf maps: Fix copy_from that can break sorted by name order
authorIan Rogers <irogers@google.com>
Wed, 8 Apr 2026 02:08:38 +0000 (19:08 -0700)
committerNamhyung Kim <namhyung@kernel.org>
Wed, 8 Apr 2026 17:28:49 +0000 (10:28 -0700)
When an parent is copied into a child the name array is populated in
address not name order. Make sure the name array isn't flagged as sorted.

Fixes: 659ad3492b91 ("perf maps: Switch from rbtree to lazily sorted array for addresses")
Signed-off-by: Ian Rogers <irogers@google.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/util/maps.c

index b44bc41f51f3bae29b5cf138c9e47e0030da48a3..81a97ac34077edf2d8b7aaccd0ae0f3bb4dfb551 100644 (file)
@@ -1081,16 +1081,9 @@ int maps__copy_from(struct maps *dest, struct maps *parent)
                                map__put(new);
                }
                maps__set_maps_by_address_sorted(dest, maps__maps_by_address_sorted(parent));
-               if (!err) {
-                       RC_CHK_ACCESS(dest)->last_search_by_name_idx =
-                               RC_CHK_ACCESS(parent)->last_search_by_name_idx;
-                       maps__set_maps_by_name_sorted(dest,
-                                               dest_maps_by_name &&
-                                               maps__maps_by_name_sorted(parent));
-               } else {
-                       RC_CHK_ACCESS(dest)->last_search_by_name_idx = 0;
-                       maps__set_maps_by_name_sorted(dest, false);
-               }
+               RC_CHK_ACCESS(dest)->last_search_by_name_idx = 0;
+               /* Values were copied into the name array in address order. */
+               maps__set_maps_by_name_sorted(dest, false);
        } else {
                /* Unexpected copying to a maps containing entries. */
                for (unsigned int i = 0; !err && i < n; i++) {