[PATCH] arm64: preserve pt_regs::stackframe during exec*()
Catalin Marinas
catalin.marinas at arm.com
Tue Oct 22 04:37:20 PDT 2024
On Mon, 21 Oct 2024 17:44:56 +0100, Mark Rutland wrote:
> When performing an exec*(), there's a transient period before the return
> to userspace where any stacktrace will result in a warning triggered by
> kunwind_next_frame_record_meta() encountering a struct frame_record_meta
> with an unknown type. This can be seen fairly reliably by enabling KASAN
> or KFENCE, e.g.
>
> | WARNING: CPU: 3 PID: 143 at arch/arm64/kernel/stacktrace.c:223 arch_stack_walk+0x264/0x3b0
> | Modules linked in:
> | CPU: 3 UID: 0 PID: 143 Comm: login Not tainted 6.12.0-rc2-00010-g0f0b9a3f6a50 #1
> | Hardware name: linux,dummy-virt (DT)
> | pstate: 814000c5 (Nzcv daIF +PAN -UAO -TCO +DIT -SSBS BTYPE=--)
> | pc : arch_stack_walk+0x264/0x3b0
> | lr : arch_stack_walk+0x1ec/0x3b0
> | sp : ffff80008060b970
> | x29: ffff80008060ba10 x28: fff00000051133c0 x27: 0000000000000000
> | x26: 0000000000000000 x25: 0000000000000000 x24: fff000007fe84000
> | x23: ffff9d1b3c940af0 x22: 0000000000000000 x21: fff00000051133c0
> | x20: ffff80008060ba50 x19: ffff9d1b3c9408e0 x18: 0000000000000014
> | x17: 000000006d50da47 x16: 000000008e3f265e x15: fff0000004e8bf40
> | x14: 0000ffffc5e50e48 x13: 000000000000000f x12: 0000ffffc5e50fed
> | x11: 000000000000001f x10: 000018007f8bffff x9 : 0000000000000000
> | x8 : ffff80008060b9c0 x7 : ffff80008060bfd8 x6 : ffff80008060ba80
> | x5 : ffff80008060ba00 x4 : ffff80008060c000 x3 : ffff80008060bff0
> | x2 : 0000000000000018 x1 : ffff80008060bfd8 x0 : 0000000000000000
> | Call trace:
> | arch_stack_walk+0x264/0x3b0 (P)
> | arch_stack_walk+0x1ec/0x3b0 (L)
> | stack_trace_save+0x50/0x80
> | metadata_update_state+0x98/0xa0
> | kfence_guarded_free+0xec/0x2c4
> | __kfence_free+0x50/0x100
> | kmem_cache_free+0x1a4/0x37c
> | putname+0x9c/0xc0
> | do_execveat_common.isra.0+0xf0/0x1e4
> | __arm64_sys_execve+0x40/0x60
> | invoke_syscall+0x48/0x104
> | el0_svc_common.constprop.0+0x40/0xe0
> | do_el0_svc+0x1c/0x28
> | el0_svc+0x34/0xe0
> | el0t_64_sync_handler+0x120/0x12c
> | el0t_64_sync+0x198/0x19c
>
> [...]
Applied to arm64 (for-next/stacktrace), thanks!
[1/1] arm64: preserve pt_regs::stackframe during exec*()
https://git.kernel.org/arm64/c/f260c4426763
--
Catalin
More information about the linux-arm-kernel
mailing list