lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date: Mon, 20 May 2024 10:42:01 +0100
From: Leo Yan <niayan01@...s.arm.com>
To: Ian Rogers <irogers@...gle.com>
Cc: Arnaldo Carvalho de Melo <acme@...nel.org>,
 Adrian Hunter <adrian.hunter@...el.com>, James Clark <james.clark@....com>,
 Peter Zijlstra <peterz@...radead.org>, Ingo Molnar <mingo@...hat.com>,
 Namhyung Kim <namhyung@...nel.org>, Mark Rutland <mark.rutland@....com>,
 Alexander Shishkin <alexander.shishkin@...ux.intel.com>,
 Jiri Olsa <jolsa@...nel.org>, Athira Rajeev <atrajeev@...ux.vnet.ibm.com>,
 linux-perf-users@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 0/2] perf maps: Improve the kcore maps merging

On 5/15/24 22:39, Ian Rogers wrote:

[...]

> Thanks Leo, testing this change on perf-tools-next with an x86 debian
> laptop I see:
> ```
> $ perf test 24 -v
> 24: Object code reading:
> --- start ---
> test child forked, pid 3407499
> Looking at the vmlinux_path (8 entries long)
> symsrc__init: build id mismatch for vmlinux.
> symsrc__init: cannot get elf header.
> overlapping maps in [kernel.kallsyms] (disable tui for more info)
> Using /proc/kcore for kernel data
> Using /proc/kallsyms for symbols
> Parsing event 'cycles'
> Using CPUID GenuineIntel-6-8D-1
> mmap size 528384B
> Reading object code for memory address: 0xfffffffface8d64a
> File is: /proc/kcore
> On file address is: 0xfffffffface8d64a
> dso__data_read_offset failed
> ---- end(-1) ----
> 24: Object code reading                                             : FAILED!
> ```
> The test passes without the changes. Let me know if you need me to dig deeper.

Just update for the test failure.

The failure is caused by the memory map's attribute is not updated after 
I removed the map replacement related code in patch 02. This means the 
old (identical) kernel map (generated by '/proc/kallsyms') still keeps 
some stale info for 'pgoff', 'mapping_type', etc.

To fix this issue, in the new patch, it removes the old kernel map (to 
avoid any stale info) and update 'machine->vmlinux_map'.

Just one concern. I saw the kcore exposes kernel text section which is 
dependent on the CONFIG_ARCH_PROC_KCORE_TEXT config, but some arches 
(e.g. PowerPC, etc) are absent for this config. But you can see even the 
current code doesn't handle this case, if the replacement map is not 
found, it is arbitrarily assigned to the first map in kcore [1]. An 
option is to rollback to use the old identical kernel map, this is not 
addressed in my latest patch, which is simply report failure in this 
case. Please review it and let me know how you think.

Thanks,
Leo

[1] 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/tools/perf/util/symbol.c?h=v6.9#n1366

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ