mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: James Clark <james.clark@linaro.org>
To: Namhyung Kim <namhyung@kernel.org>, Ian Rogers <irogers@google.com>
Cc: acme@kernel.org, gmx@google.com, adrian.hunter@intel.com,
	jolsa@kernel.org, linux-kernel@vger.kernel.org,
	linux-perf-users@vger.kernel.org, mingo@redhat.com,
	peterz@infradead.org
Subject: Re: [PATCH v6 3/6] perf maps: Add maps__mutate_mapping
Date: Wed, 10 Jun 2026 11:40:41 +0100	[thread overview]
Message-ID: <23aa52ba-9712-4fdd-99cd-cc14929aaa3c@linaro.org> (raw)
In-Reply-To: <agGALmRbvBcJS9sM@z2>



On 11/05/2026 8:07 am, Namhyung Kim wrote:
> On Fri, May 08, 2026 at 01:27:23AM -0700, Ian Rogers wrote:
>> During kernel ELF symbol parsing (dso__process_kernel_symbol), proc
>> kallsyms image loading (dso__load_kernel_sym,
>> dso__load_guest_kernel_sym), and dynamic kernel memory map alignment
>> updates (machine__update_kernel_mmap), the loader directly modifies
>> live virtual address boundary keys fields on map objects.  If these
>> boundaries are mutated while the map pointer actively resides inside
>> the parent maps cache array list (kmaps) outside of any lock closure,
>> an unsafe concurrent window is exposed where parallel worker lookup
>> threads (e.g., inside perf top) can mistakenly assume the cache
>> remains sorted based on stale parameters, executing binary search
>> queries (bsearch) across an unsorted range and triggering lookups
>> failure.
>>
>> Fix this by introducing a thread-safe, atomic transactional framework
>> routine maps__mutate_mapping() that explicitly acquires the parent
>> maps write semaphore lock, executes an incoming mutation callback
>> block to perform the field updates under full lock protection, and
>> invalidates the sorted tracking flags prior to releasing the write
>> lock. This guarantees absolute atomic synchronization invariants,
>> completely closing the concurrent lookup race window. The adjacent
>> module alignment pass inside machine__create_kernel_maps() is safely
>> preserved as a high-performance lockless pass, as its invocation
>> lifecycle bounds remain strictly single-threaded by contract during
>> session initialization construction. There is a potential for self
>> deadlock if maps__mutate_mapping is called with the lock held, such as
>> with maps__for_each_map but this problem also existed with the
>> previous remove and insert approaches.
>>
>> Fixes: 39b12f781271 ("perf tools: Make it possible to read object code from vmlinux")
>> Signed-off-by: Ian Rogers <irogers@google.com>
>> ---
>>   tools/perf/util/machine.c    | 32 +++++++++++++++++-----------
>>   tools/perf/util/maps.c       | 26 +++++++++++++++++++++++
>>   tools/perf/util/maps.h       |  2 ++
>>   tools/perf/util/symbol-elf.c | 41 +++++++++++++++++++++++-------------
>>   tools/perf/util/symbol.c     | 17 +++++++++++----
>>   5 files changed, 87 insertions(+), 31 deletions(-)
>>
>> diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
>> index e76f8c86e62a..8d4452c70cb5 100644
>> --- a/tools/perf/util/machine.c
>> +++ b/tools/perf/util/machine.c
>> @@ -1522,22 +1522,30 @@ static void machine__set_kernel_mmap(struct machine *machine,
>>   		map__set_end(machine->vmlinux_map, ~0ULL);
>>   }
>>   
>> -static int machine__update_kernel_mmap(struct machine *machine,
>> -				     u64 start, u64 end)
>> +struct kernel_mmap_mutation_ctx {
>> +	u64 start;
>> +	u64 end;
>> +};
>> +
>> +static int kernel_mmap_mutate_cb(struct map *map, void *data)
>>   {
>> -	struct map *orig, *updated;
>> -	int err;
>> +	struct kernel_mmap_mutation_ctx *ctx = data;
>>   
>> -	orig = machine->vmlinux_map;
>> -	updated = map__get(orig);
>> +	map__set_start(map, ctx->start);
>> +	map__set_end(map, ctx->end);
>> +	if (ctx->start == 0 && ctx->end == 0)
>> +		map__set_end(map, ~0ULL);
>> +	return 0;
>> +}
>>   
>> -	machine->vmlinux_map = updated;
>> -	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);
>> +static int machine__update_kernel_mmap(struct machine *machine,
>> +				     u64 start, u64 end)
>> +{
>> +	struct kernel_mmap_mutation_ctx ctx = { .start = start, .end = end };
>>   
>> -	return err;
>> +	return maps__mutate_mapping(machine__kernel_maps(machine),
>> +				     machine->vmlinux_map,
>> +				     kernel_mmap_mutate_cb, &ctx);
>>   }
>>   
>>   int machine__create_kernel_maps(struct machine *machine)
>> diff --git a/tools/perf/util/maps.c b/tools/perf/util/maps.c
>> index 81a97ac34077..91345a773aa2 100644
>> --- a/tools/perf/util/maps.c
>> +++ b/tools/perf/util/maps.c
>> @@ -575,6 +575,32 @@ void maps__remove(struct maps *maps, struct map *map)
>>   #endif
>>   }
>>   
>> +int maps__mutate_mapping(struct maps *maps, struct map *map,
>> +			 int (*mutate_cb)(struct map *map, void *data), void *data)
>> +{
>> +	int err = 0;
>> +
>> +	if (maps)
>> +		down_write(maps__lock(maps));
>> +
>> +	err = mutate_cb(map, data);
>> +
>> +	if (maps) {
>> +		RC_CHK_ACCESS(maps)->maps_by_address_sorted = false;
>> +		RC_CHK_ACCESS(maps)->maps_by_name_sorted = false;
>> +	}
>> +
>> +	if (maps)
>> +		up_write(maps__lock(maps));
>> +
>> +#ifdef HAVE_LIBDW_SUPPORT
>> +	if (maps)
>> +		libdw__invalidate_dwfl(maps, maps__libdw_addr_space_dwfl(maps));
>> +#endif
>> +
>> +	return err;
>> +}
> 
> Could be simplified by checking 'maps' once.  But I'm not sure if
> there's a case it doesn't have the maps.
> 
> Thanks,
> Namhyung
> 

Hi Ian,

The multiple maps checks after mutate_cb() still seem to be in V19.

I noticed because I still get the -Wthread-safety-analysis error on x86 
clang 15. Not sure why the compiler isn't able to see that maps doesn't 
change, and no amount of re-arranging made it go away. The only way to 
fix it is to have the lock and unlock in the same block, but I don't 
think it looks bad:

	if (maps) {
		down_write(maps__lock(maps));

		err = mutate_cb(map, data);

		RC_CHK_ACCESS(maps)->maps_by_address_sorted = false;
		RC_CHK_ACCESS(maps)->maps_by_name_sorted = false;

		up_write(maps__lock(maps));
	} else {
		err = mutate_cb(map, data);
	}

Thanks
James


>> +
>>   bool maps__empty(struct maps *maps)
>>   {
>>   	bool res;
>> diff --git a/tools/perf/util/maps.h b/tools/perf/util/maps.h
>> index 20c52084ba9e..de74ccbb8a12 100644
>> --- a/tools/perf/util/maps.h
>> +++ b/tools/perf/util/maps.h
>> @@ -61,6 +61,8 @@ size_t maps__fprintf(struct maps *maps, FILE *fp);
>>   
>>   int maps__insert(struct maps *maps, struct map *map);
>>   void maps__remove(struct maps *maps, struct map *map);
>> +int maps__mutate_mapping(struct maps *maps, struct map *map,
>> +			 int (*mutate_cb)(struct map *map, void *data), void *data);
>>   
>>   struct map *maps__find(struct maps *maps, u64 addr);
>>   struct symbol *maps__find_symbol(struct maps *maps, u64 addr, struct map **mapp);
>> diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
>> index 7afa8a117139..dc4ab58857b3 100644
>> --- a/tools/perf/util/symbol-elf.c
>> +++ b/tools/perf/util/symbol-elf.c
>> @@ -1341,6 +1341,24 @@ static u64 ref_reloc(struct kmap *kmap)
>>   void __weak arch__sym_update(struct symbol *s __maybe_unused,
>>   		GElf_Sym *sym __maybe_unused) { }
>>   
>> +struct remap_kernel_ctx {
>> +	u64 sh_addr;
>> +	u64 sh_size;
>> +	u64 sh_offset;
>> +	struct kmap *kmap;
>> +};
>> +
>> +static int remap_kernel_cb(struct map *map, void *data)
>> +{
>> +	struct remap_kernel_ctx *ctx = data;
>> +
>> +	map__set_start(map, ctx->sh_addr + ref_reloc(ctx->kmap));
>> +	map__set_end(map, map__start(map) + ctx->sh_size);
>> +	map__set_pgoff(map, ctx->sh_offset);
>> +	map__set_mapping_type(map, MAPPING_TYPE__DSO);
>> +	return 0;
>> +}
>> +
>>   static int dso__process_kernel_symbol(struct dso *dso, struct map *map,
>>   				      GElf_Sym *sym, GElf_Shdr *shdr,
>>   				      struct maps *kmaps, struct kmap *kmap,
>> @@ -1371,22 +1389,15 @@ static int dso__process_kernel_symbol(struct dso *dso, struct map *map,
>>   		 * map to the kernel dso.
>>   		 */
>>   		if (*remap_kernel && dso__kernel(dso) && !kmodule) {
>> +			struct remap_kernel_ctx ctx = {
>> +				.sh_addr = shdr->sh_addr,
>> +				.sh_size = shdr->sh_size,
>> +				.sh_offset = shdr->sh_offset,
>> +				.kmap = kmap
>> +			};
>> +
>>   			*remap_kernel = false;
>> -			map__set_start(map, shdr->sh_addr + ref_reloc(kmap));
>> -			map__set_end(map, map__start(map) + shdr->sh_size);
>> -			map__set_pgoff(map, shdr->sh_offset);
>> -			map__set_mapping_type(map, MAPPING_TYPE__DSO);
>> -			/* Ensure maps are correctly ordered */
>> -			if (kmaps) {
>> -				int err;
>> -				struct map *tmp = map__get(map);
>> -
>> -				maps__remove(kmaps, map);
>> -				err = maps__insert(kmaps, map);
>> -				map__put(tmp);
>> -				if (err)
>> -					return err;
>> -			}
>> +			maps__mutate_mapping(kmaps, map, remap_kernel_cb, &ctx);
>>   		}
>>   
>>   		/*
>> diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
>> index fcaeeddbbb6b..09b93e844887 100644
>> --- a/tools/perf/util/symbol.c
>> +++ b/tools/perf/util/symbol.c
>> @@ -48,6 +48,13 @@
>>   #include <symbol/kallsyms.h>
>>   #include <sys/utsname.h>
>>   
>> +static int map_fixup_cb(struct map *map, void *data __maybe_unused)
>> +{
>> +	map__fixup_start(map);
>> +	map__fixup_end(map);
>> +	return 0;
>> +}
>> +
>>   static int dso__load_kernel_sym(struct dso *dso, struct map *map);
>>   static int dso__load_guest_kernel_sym(struct dso *dso, struct map *map);
>>   static bool symbol__is_idle(const char *name);
>> @@ -2121,10 +2128,11 @@ static int dso__load_kernel_sym(struct dso *dso, struct map *map)
>>   	free(kallsyms_allocated_filename);
>>   
>>   	if (err > 0 && !dso__is_kcore(dso)) {
>> +		struct maps *kmaps = map__kmaps(map);
>> +
>>   		dso__set_binary_type(dso, DSO_BINARY_TYPE__KALLSYMS);
>>   		dso__set_long_name(dso, DSO__NAME_KALLSYMS, false);
>> -		map__fixup_start(map);
>> -		map__fixup_end(map);
>> +		maps__mutate_mapping(kmaps, map, map_fixup_cb, NULL);
>>   	}
>>   
>>   	return err;
>> @@ -2164,10 +2172,11 @@ static int dso__load_guest_kernel_sym(struct dso *dso, struct map *map)
>>   	if (err > 0)
>>   		pr_debug("Using %s for symbols\n", kallsyms_filename);
>>   	if (err > 0 && !dso__is_kcore(dso)) {
>> +		struct maps *kmaps = map__kmaps(map);
>> +
>>   		dso__set_binary_type(dso, DSO_BINARY_TYPE__GUEST_KALLSYMS);
>>   		dso__set_long_name(dso, machine->mmap_name, false);
>> -		map__fixup_start(map);
>> -		map__fixup_end(map);
>> +		maps__mutate_mapping(kmaps, map, map_fixup_cb, NULL);
>>   	}
>>   
>>   	return err;
>> -- 
>> 2.54.0.563.g4f69b47b94-goog
>>


  reply	other threads:[~2026-06-10 10:40 UTC|newest]

Thread overview: 137+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-24 22:05 [PATCH v1 1/2] perf inject/aslr: Add aslr tool to remap/obfuscate virtual addresses Ian Rogers
2026-04-24 22:05 ` [PATCH v1 2/2] perf test: Add inject ASLR test Ian Rogers
2026-04-25  2:05 ` [PATCH v2 1/2] perf inject/aslr: Add aslr tool to remap/obfuscate virtual addresses Ian Rogers
2026-04-25  2:05   ` [PATCH v2 2/2] perf test: Add inject ASLR test Ian Rogers
2026-05-04  3:51   ` [PATCH v3 0/4] perf tools: Add inject --aslr feature and prerequisite robustness fixes Ian Rogers
2026-05-04  3:51     ` [PATCH v3 1/4] perf sched: Add missing mmap2 handler in timehist Ian Rogers
2026-05-04  3:51     ` [PATCH v3 2/4] perf tool: Fix missing schedstat delegates and dont_split_sample_group in delegate_tool Ian Rogers
2026-05-04  3:51     ` [PATCH v3 3/4] perf inject/aslr: Add aslr tool to remap/obfuscate virtual addresses Ian Rogers
2026-05-04  3:51     ` [PATCH v3 4/4] perf test: Add inject ASLR test Ian Rogers
2026-05-04  7:29     ` [PATCH v4 0/4] perf tools: Add inject --aslr feature and prerequisite robustness fixes Ian Rogers
2026-05-04  7:29       ` [PATCH v4 1/4] perf sched: Add missing mmap2 handler in timehist Ian Rogers
2026-05-04  7:29       ` [PATCH v4 2/4] perf tool: Fix missing schedstat delegates and dont_split_sample_group in delegate_tool Ian Rogers
2026-05-04  7:29       ` [PATCH v4 3/4] perf inject/aslr: Add aslr tool to remap/obfuscate virtual addresses Ian Rogers
2026-05-04  7:29       ` [PATCH v4 4/4] perf test: Add inject ASLR test Ian Rogers
2026-05-04  8:23       ` [PATCH v4 0/4] perf tools: Add inject --aslr feature and prerequisite robustness fixes Ian Rogers
2026-05-06  0:45       ` [PATCH v5 0/5] " Ian Rogers
2026-05-06  0:45         ` [PATCH v5 1/5] perf sched: Add missing mmap2 handler in timehist Ian Rogers
2026-05-06 13:22           ` Arnaldo Carvalho de Melo
2026-05-06 16:16             ` Ian Rogers
2026-05-06  0:45         ` [PATCH v5 2/5] perf tool: Fix missing schedstat delegates and dont_split_sample_group in delegate_tool Ian Rogers
2026-05-06  0:45         ` [PATCH v5 3/5] perf symbols: Fix map removal sequence inside dso__process_kernel_symbol() Ian Rogers
2026-05-06  0:45         ` [PATCH v5 4/5] perf inject/aslr: Add aslr tool to remap/obfuscate virtual addresses Ian Rogers
2026-05-06 18:52           ` Namhyung Kim
2026-05-06 20:01             ` Ian Rogers
2026-05-06  0:45         ` [PATCH v5 5/5] perf test: Add inject ASLR test Ian Rogers
2026-05-07 15:58           ` James Clark
2026-05-07 16:17             ` Ian Rogers
2026-05-08 10:42               ` James Clark
2026-05-08 10:49                 ` James Clark
2026-05-08  8:27         ` [PATCH v6 0/6] perf tools: Add inject --aslr feature and prerequisite robustness fixes Ian Rogers
2026-05-08  8:27           ` [PATCH v6 1/6] perf sched: Add missing mmap2 handler in timehist Ian Rogers
2026-05-08  8:27           ` [PATCH v6 2/6] perf tool: Missing delegate_tool schedstat delegates and dont_split_sample_group Ian Rogers
2026-05-08  8:27           ` [PATCH v6 3/6] perf maps: Add maps__mutate_mapping Ian Rogers
2026-05-08 10:57             ` James Clark
2026-05-11  7:07             ` Namhyung Kim
2026-06-10 10:40               ` James Clark [this message]
2026-05-08  8:27           ` [PATCH v6 4/6] perf inject/aslr: Add aslr tool to remap/obfuscate virtual addresses Ian Rogers
2026-05-11  7:32             ` Namhyung Kim
2026-05-08  8:27           ` [PATCH v6 5/6] perf test: Add inject ASLR test Ian Rogers
2026-05-08 13:29             ` James Clark
2026-05-08 14:29               ` James Clark
2026-05-11  7:34             ` Namhyung Kim
2026-05-08  8:27           ` [PATCH v6 6/6] perf aslr: Strip sample registers Ian Rogers
2026-05-19  8:08           ` [PATCH v7 0/4] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-05-19  8:08             ` [PATCH v7 1/4] perf maps: Add maps__mutate_mapping Ian Rogers
2026-05-19  8:08             ` [PATCH v7 2/4] perf inject/aslr: Add aslr tool to remap/obfuscate virtual addresses Ian Rogers
2026-05-19  8:08             ` [PATCH v7 3/4] perf test: Add inject ASLR test Ian Rogers
2026-05-19  8:08             ` [PATCH v7 4/4] perf aslr: Strip sample registers Ian Rogers
2026-05-20  6:30             ` [PATCH v8 0/4] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-05-20  6:30               ` [PATCH v8 1/4] perf maps: Add maps__mutate_mapping Ian Rogers
2026-05-20  6:30               ` [PATCH v8 2/4] perf inject/aslr: Add aslr tool to remap/obfuscate virtual addresses Ian Rogers
2026-05-23 14:44                 ` kernel test robot
2026-05-20  6:30               ` [PATCH v8 3/4] perf test: Add inject ASLR test Ian Rogers
2026-05-20  6:30               ` [PATCH v8 4/4] perf aslr: Strip sample registers Ian Rogers
2026-06-04 17:28               ` [PATCH v9 0/5] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-06-04 17:28                 ` [PATCH v9 1/5] perf maps: Add maps__mutate_mapping Ian Rogers
2026-06-04 17:28                 ` [PATCH v9 2/5] perf inject/aslr: Add ASLR tool infrastructure and MMAP tracking Ian Rogers
2026-06-04 17:28                 ` [PATCH v9 3/5] perf inject/aslr: Implement sample address remapping Ian Rogers
2026-06-04 17:28                 ` [PATCH v9 4/5] perf test: Add inject ASLR test Ian Rogers
2026-06-04 17:28                 ` [PATCH v9 5/5] perf aslr: Strip sample registers Ian Rogers
2026-06-05  6:06                 ` [PATCH v10 0/5] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-06-05  6:06                   ` [PATCH v10 1/5] perf maps: Add maps__mutate_mapping Ian Rogers
2026-06-05  6:06                   ` [PATCH v10 2/5] perf inject/aslr: Add ASLR tool infrastructure and MMAP tracking Ian Rogers
2026-06-05  6:06                   ` [PATCH v10 3/5] perf inject/aslr: Implement sample address remapping Ian Rogers
2026-06-05  6:06                   ` [PATCH v10 4/5] perf test: Add inject ASLR test Ian Rogers
2026-06-05  6:06                   ` [PATCH v10 5/5] perf aslr: Strip sample registers Ian Rogers
2026-06-05 18:52                   ` [PATCH v11 0/5] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-06-05 18:52                     ` [PATCH v11 1/5] perf maps: Add maps__mutate_mapping Ian Rogers
2026-06-05 18:52                     ` [PATCH v11 2/5] perf inject/aslr: Add ASLR tool infrastructure and MMAP tracking Ian Rogers
2026-06-05 18:52                     ` [PATCH v11 3/5] perf inject/aslr: Implement sample address remapping Ian Rogers
2026-06-05 18:52                     ` [PATCH v11 4/5] perf test: Add inject ASLR test Ian Rogers
2026-06-05 18:52                     ` [PATCH v11 5/5] perf aslr: Strip sample registers Ian Rogers
2026-06-05 19:24                     ` [PATCH v12 0/5] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-06-05 19:24                       ` [PATCH v12 1/5] perf maps: Add maps__mutate_mapping Ian Rogers
2026-06-05 19:24                       ` [PATCH v12 2/5] perf inject/aslr: Add ASLR tool infrastructure and MMAP tracking Ian Rogers
2026-06-05 19:24                       ` [PATCH v12 3/5] perf inject/aslr: Implement sample address remapping Ian Rogers
2026-06-05 19:24                       ` [PATCH v12 4/5] perf test: Add inject ASLR test Ian Rogers
2026-06-05 19:24                       ` [PATCH v12 5/5] perf aslr: Strip sample registers Ian Rogers
2026-06-05 19:48                       ` [PATCH v13 0/5] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-06-05 19:48                         ` [PATCH v13 1/5] perf maps: Add maps__mutate_mapping Ian Rogers
2026-06-05 19:48                         ` [PATCH v13 2/5] perf inject/aslr: Add ASLR tool infrastructure and MMAP tracking Ian Rogers
2026-06-05 19:48                         ` [PATCH v13 3/5] perf inject/aslr: Implement sample address remapping Ian Rogers
2026-06-05 19:48                         ` [PATCH v13 4/5] perf test: Add inject ASLR test Ian Rogers
2026-06-05 19:48                         ` [PATCH v13 5/5] perf aslr: Strip sample registers Ian Rogers
2026-06-05 20:56                         ` [PATCH v14 0/5] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-06-05 20:56                           ` [PATCH v14 1/5] perf maps: Add maps__mutate_mapping Ian Rogers
2026-06-05 20:56                           ` [PATCH v14 2/5] perf inject/aslr: Add ASLR tool infrastructure and MMAP tracking Ian Rogers
2026-06-05 20:56                           ` [PATCH v14 3/5] perf inject/aslr: Implement sample address remapping Ian Rogers
2026-06-05 20:56                           ` [PATCH v14 4/5] perf test: Add inject ASLR test Ian Rogers
2026-06-05 20:56                           ` [PATCH v14 5/5] perf aslr: Strip sample registers Ian Rogers
2026-06-06  7:21                           ` [PATCH v15 0/5] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-06-06  7:21                             ` [PATCH v15 1/5] perf maps: Add maps__mutate_mapping Ian Rogers
2026-06-06  7:21                             ` [PATCH v15 2/5] perf inject/aslr: Add ASLR tool infrastructure and MMAP tracking Ian Rogers
2026-06-06  7:21                             ` [PATCH v15 3/5] perf inject/aslr: Implement sample address remapping Ian Rogers
2026-06-06  7:21                             ` [PATCH v15 4/5] perf test: Add inject ASLR test Ian Rogers
2026-06-06  7:21                             ` [PATCH v15 5/5] perf aslr: Strip sample registers Ian Rogers
2026-06-06 15:14                             ` [PATCH v16 0/5] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-06-06 15:14                               ` [PATCH v16 1/5] perf maps: Add maps__mutate_mapping Ian Rogers
2026-06-06 15:14                               ` [PATCH v16 2/5] perf inject/aslr: Add ASLR tool infrastructure and MMAP tracking Ian Rogers
2026-06-06 15:14                               ` [PATCH v16 3/5] perf inject/aslr: Implement sample address remapping Ian Rogers
2026-06-06 15:14                               ` [PATCH v16 4/5] perf test: Add inject ASLR test Ian Rogers
2026-06-06 15:14                               ` [PATCH v16 5/5] perf aslr: Strip sample registers Ian Rogers
2026-06-07  6:09                               ` [PATCH v17 0/5] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-06-07  6:09                                 ` [PATCH v17 1/5] perf maps: Add maps__mutate_mapping Ian Rogers
2026-06-07  6:09                                 ` [PATCH v17 2/5] perf inject/aslr: Add ASLR tool infrastructure and MMAP tracking Ian Rogers
2026-06-07  6:09                                 ` [PATCH v17 3/5] perf inject/aslr: Implement sample address remapping Ian Rogers
2026-06-07  6:09                                 ` [PATCH v17 4/5] perf aslr: Strip sample registers Ian Rogers
2026-06-07  6:09                                 ` [PATCH v17 5/5] perf test: Add inject ASLR test Ian Rogers
2026-06-07 21:36                                 ` [PATCH v18 0/5] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-06-07 21:36                                   ` [PATCH v18 1/5] perf maps: Add maps__mutate_mapping Ian Rogers
2026-06-07 21:36                                   ` [PATCH v18 2/5] perf inject/aslr: Add ASLR tool infrastructure and MMAP tracking Ian Rogers
2026-06-07 21:36                                   ` [PATCH v18 3/5] perf inject/aslr: Implement sample address remapping Ian Rogers
2026-06-07 21:36                                   ` [PATCH v18 4/5] perf aslr: Strip sample registers Ian Rogers
2026-06-07 21:37                                   ` [PATCH v18 5/5] perf test: Add inject ASLR test Ian Rogers
2026-06-08  5:48                                   ` [PATCH v19 0/5] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-06-08  5:48                                     ` [PATCH v19 1/5] perf maps: Add maps__mutate_mapping Ian Rogers
2026-06-08  5:48                                     ` [PATCH v19 2/5] perf inject/aslr: Add ASLR tool infrastructure and MMAP tracking Ian Rogers
2026-06-08  5:48                                     ` [PATCH v19 3/5] perf inject/aslr: Implement sample address remapping Ian Rogers
2026-06-08  5:48                                     ` [PATCH v19 4/5] perf aslr: Strip sample registers Ian Rogers
2026-06-08  5:48                                     ` [PATCH v19 5/5] perf test: Add inject ASLR test Ian Rogers
2026-06-10 13:26                                       ` James Clark
2026-06-10 16:15                                         ` Ian Rogers
2026-06-11  8:32                                           ` James Clark
2026-06-08 15:08                                     ` [PATCH v19 0/5] perf tools: Add inject --aslr feature, early maps loading, and decoupling fixes Ian Rogers
2026-06-11 16:41                                     ` [PATCH v20 0/5] perf tools: Add inject --aslr feature Ian Rogers
2026-06-11 16:41                                       ` [PATCH v20 1/5] perf maps: Add maps__mutate_mapping Ian Rogers
2026-06-11 16:41                                       ` [PATCH v20 2/5] perf inject/aslr: Add ASLR tool infrastructure and MMAP tracking Ian Rogers
2026-06-11 16:41                                       ` [PATCH v20 3/5] perf inject/aslr: Implement sample address remapping Ian Rogers
2026-06-15 12:13                                         ` Arnaldo Carvalho de Melo
2026-06-15 15:38                                           ` Ian Rogers
2026-06-15 17:44                                           ` Arnaldo Carvalho de Melo
2026-06-11 16:41                                       ` [PATCH v20 4/5] perf aslr: Strip sample registers Ian Rogers
2026-06-11 16:41                                       ` [PATCH v20 5/5] perf test: Add inject ASLR test Ian Rogers
2026-06-11 18:29                                       ` [PATCH v20 0/5] perf tools: Add inject --aslr feature Ian Rogers
2026-06-13  0:26                                         ` Arnaldo Carvalho de Melo
2026-06-13  2:55                                           ` Ian Rogers
2026-06-15  9:10                                       ` James Clark

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=23aa52ba-9712-4fdd-99cd-cc14929aaa3c@linaro.org \
    --to=james.clark@linaro.org \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=gmx@google.com \
    --cc=irogers@google.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome