[BUG -tip] kmemleak and stacktrace cause page faul

From: Cyrill Gorcunov
Date: Sat Oct 19 2019 - 07:50:56 EST


Hi! I'm not sure if I've CC'ed proper persons, so please sorry if I did.
Anyway, today's -tip (07b4dbf1d830) refused to boot

[ 0.024793] No NUMA configuration found
[ 0.025406] Faking a node at [mem 0x0000000000000000-0x000000007ffdefff]
[ 0.026462] NODE_DATA(0) allocated [mem 0x7ffdb000-0x7ffdefff]
[ 0.027246] BUG: unable to handle page fault for address: 0000000000001ff0
[ 0.028160] #PF: supervisor read access in kernel mode
[ 0.028992] #PF: error_code(0x0000) - not-present page
[ 0.029820] PGD 0 P4D 0
[ 0.030226] Oops: 0000 [#1] PREEMPT SMP PTI
[ 0.031069] CPU: 0 PID: 0 Comm: swapper Not tainted 5.4.0-rc3-00258-g07b4dbf1d830 #93
[ 0.032317] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.11.2-0-gf9626ccb91-prebuilt.qemu-project.org 04/01/2014
[ 0.034163] RIP: 0010:get_stack_info+0xb3/0x148
[ 0.034903] Code: 04 d5 84 48 01 82 66 85 c0 74 25 8b 0c d5 80 48 01 82 0f b7 14 d5 86 48 01 82 48 01 f1 89 13 48 01 c8 48 89 4b 08 48 89 43 10 <48> 8b 40 f0 eb 2b 65 48 8b 05 1f f4 f9 7e 48 8d 90 00 c0 ff ff 48
[ 0.037579] RSP: 0000:ffffffff82603be0 EFLAGS: 00010006

I nailed it down to the following kmemleak code

create_object
...
object->trace_len = __save_stack_trace(object->trace);

if I drop this line out it boots fine. Just wanted to share the observation,
probably it is known issue already.

Sidenote: The last -tip kernel which I've been working with is dated Sep 18
so the changes which cause the problem should be introduced last month.