Lorenz Bauer
2e2713ae1a
btf: Fix virt_to_phys() on arm64 when mmapping BTF
Breno Leitao reports that arm64 emits the following warning
with CONFIG_DEBUG_VIRTUAL:
[ 58.896157] virt_to_phys used for non-linear address: 000000009fea9737
(__start_BTF+0x0/0x685530)
[ 23.988669] WARNING: CPU: 25 PID: 1442 at arch/arm64/mm/physaddr.c:15
__virt_to_phys (arch/arm64/mm/physaddr.c:?)
...
[ 24.075371] Tainted: [E]=UNSIGNED_MODULE, [N]=TEST
[ 24.080276] Hardware name: Quanta S7GM 20S7GCU0010/S7G MB (CG1), BIOS 3D22
07/03/2024
[ 24.088295] pstate: 63400009 (nZCv daif +PAN -UAO +TCO +DIT -SSBS BTYPE=--)
[ 24.098440] pc : __virt_to_phys (arch/arm64/mm/physaddr.c:?)
[ 24.105398] lr : __virt_to_phys (arch/arm64/mm/physaddr.c:?)
...
[ 24.197257] Call trace:
[ 24.199761] __virt_to_phys (arch/arm64/mm/physaddr.c:?) (P)
[ 24.206883] btf_sysfs_vmlinux_mmap (kernel/bpf/sysfs_btf.c:27)
[ 24.214264] sysfs_kf_bin_mmap (fs/sysfs/file.c:179)
[ 24.218536] kernfs_fop_mmap (fs/kernfs/file.c:462)
[ 24.222461] mmap_region (./include/linux/fs.h:? mm/internal.h:167
mm/vma.c:2405 mm/vma.c:2467 mm/vma.c:2622 mm/vma.c:2692)
It seems that the memory layout on arm64 maps the kernel image in vmalloc space
which is different than x86. This makes virt_to_phys emit the warning.
Fix this by translating the address using __pa_symbol as suggested by
Breno instead.
Reported-by: Breno Leitao <leitao@debian.org>
Closes: https://lore.kernel.org/bpf/g2gqhkunbu43awrofzqb4cs4sxkxg2i4eud6p4qziwrdh67q4g@mtw3d3aqfgmb/
Signed-off-by: Lorenz Bauer <lmb@isovalent.com>
Tested-by: Breno Leitao <leitao@debian>
Fixes: a539e2a6d5 ("btf: Allow mmap of vmlinux btf")
Link: https://lore.kernel.org/r/20250717-vmlinux-mmap-pa-symbol-v1-1-970be6681158@isovalent.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2025-07-17 11:33:52 -07:00
..
2025-04-25 09:21:23 -07:00
2025-03-30 13:45:28 -07:00
2025-01-08 18:06:35 -08:00
2024-03-27 09:56:17 -07:00
2025-03-18 19:05:46 -07:00
2025-01-08 18:06:36 -08:00
2025-02-17 18:47:27 -08:00
2025-01-08 18:06:37 -08:00
2025-06-18 18:50:14 -07:00
2025-06-18 18:50:14 -07:00
2025-02-13 19:35:31 -08:00
2025-05-14 17:48:57 -07:00
2025-01-08 18:06:36 -08:00
2024-08-30 08:55:26 -07:00
2024-08-30 08:55:26 -07:00
2025-05-28 15:52:42 -07:00
2025-06-23 21:50:44 -07:00
2025-05-27 10:43:10 -07:00
2025-02-27 14:03:39 +01:00
2025-03-15 11:48:57 -07:00
2024-06-13 16:33:04 -07:00
2024-12-12 14:19:05 -08:00
2025-03-17 13:50:56 -07:00
2024-11-12 17:13:46 -08:00
2025-05-27 09:51:25 -07:00
2025-04-28 08:40:45 -07:00
2025-07-01 15:22:46 -07:00
2025-04-08 11:24:36 +02:00
2024-05-14 00:36:29 -07:00
2024-11-01 11:08:32 -07:00
2024-07-29 12:53:00 -07:00
2024-12-04 08:38:29 -08:00
2025-03-19 08:03:05 -07:00
2025-05-27 09:51:25 -07:00
2024-08-13 15:58:17 -07:00
2024-11-13 12:52:51 -08:00
2025-03-08 09:06:50 -08:00
2025-03-19 08:03:05 -07:00
2025-03-19 08:03:05 -07:00
2025-04-10 12:51:10 -07:00
2025-01-08 18:06:36 -08:00
2024-11-13 13:52:45 -08:00
2024-08-30 08:55:26 -07:00
2024-08-30 08:57:47 -07:00
2025-04-11 10:28:26 -07:00
2025-04-10 12:47:07 -07:00
2025-03-19 08:03:05 -07:00
2024-09-11 09:58:31 -07:00
2025-05-31 15:44:16 -07:00
2025-07-17 11:33:52 -07:00
2024-11-18 10:30:29 -08:00
2024-10-07 13:34:41 -04:00
2024-11-12 17:13:46 -08:00
2025-06-17 08:40:59 -07:00