Patch "perf map: Remove kernel map before updating start and end addresses" has been added to the 6.9-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    perf map: Remove kernel map before updating start and end addresses

to the 6.9-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     perf-map-remove-kernel-map-before-updating-start-and.patch
and it can be found in the queue-6.9 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 79ab146a8444eea26bd687a8b41e9c4a0adc02a9
Author: James Clark <james.clark@xxxxxxx>
Date:   Wed Apr 10 11:34:54 2024 +0100

    perf map: Remove kernel map before updating start and end addresses
    
    [ Upstream commit df12e21d4e15e48a5e7d12e58f1a00742c4177d0 ]
    
    In a debug build there is validation that mmap lists are sorted when
    taking a lock. In machine__update_kernel_mmap() the start and end
    addresses are updated resulting in an unsorted list before the map is
    removed from the list. When the map is removed, the lock is taken which
    triggers the validation and the failure:
    
      $ perf test "object code reading"
      --- start ---
      perf: util/maps.c:88: check_invariants: Assertion `map__start(prev) <= map__start(map)' failed.
      Aborted
    
    Fix it by updating the addresses after removal, but before insertion.
    The bug depends on the ordering and type of debug info on the system and
    doesn't reproduce everywhere.
    
    Fixes: 659ad3492b913c90 ("perf maps: Switch from rbtree to lazily sorted array for addresses")
    Reviewed-by: Ian Rogers <irogers@xxxxxxxxxx>
    Signed-off-by: James Clark <james.clark@xxxxxxx>
    Acked-by: Namhyung Kim <namhyung@xxxxxxxxxx>
    Cc: Adrian Hunter <adrian.hunter@xxxxxxxxx>
    Cc: Alexander Shishkin <alexander.shishkin@xxxxxxxxxxxxxxx>
    Cc: Athira Rajeev <atrajeev@xxxxxxxxxxxxxxxxxx>
    Cc: Ian Rogers <irogers@xxxxxxxxxx>
    Cc: Ingo Molnar <mingo@xxxxxxxxxx>
    Cc: Jiri Olsa <jolsa@xxxxxxxxxx>
    Cc: Kan Liang <kan.liang@xxxxxxxxxxxxxxx>
    Cc: Leo Yan <leo.yan@xxxxxxxxx>
    Cc: Mark Rutland <mark.rutland@xxxxxxx>
    Cc: Namhyung Kim <namhyung@xxxxxxxxxx>
    Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
    Cc: Spoorthy S <spoorts2@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20240410103458.813656-4-james.clark@xxxxxxx
    Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
index 527517db31821..07c22f765fab4 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -1549,8 +1549,8 @@ static int machine__update_kernel_mmap(struct machine *machine,
 	updated = map__get(orig);
 
 	machine->vmlinux_map = updated;
-	machine__set_kernel_mmap(machine, start, end);
 	maps__remove(machine__kernel_maps(machine), orig);
+	machine__set_kernel_mmap(machine, start, end);
 	err = maps__insert(machine__kernel_maps(machine), updated);
 	map__put(orig);
 




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux