d_lookup: Unable to handle kernel paging request

Vicente Bergas
2019-05-22T10:41:02Z

Hi,
since a recent update the kernel is reporting d_lookup errors.
They appear randomly and after each error the affected file or directory
is no longer accessible.
The kernel is built with GCC 9.1.0 on ARM64.
Four traces from different workloads follow.

This trace is from v5.1-12511-g72cf0b07418a while untaring into a tmpfs
filesystem:

Unable to handle kernel paging request at virtual address 0000880001000018
Mem abort info:
ESR = 0x96000004
Exception class = DABT (current EL), IL = 32 bits
SET = 0, FnV = 0
EA = 0, S1PTW = 0
Data abort info:
ISV = 0, ISS = 0x00000004
CM = 0, WnR = 0
user pgtable: 4k pages, 48-bit VAs, pgdp = 000000007ccc6c7d
[0000880001000018] pgd=0000000000000000
Internal error: Oops: 96000004 [#1] SMP
Process tar (pid: 1673, stack limit = 0x0000000083be9793)
CPU: 5 PID: 1673 Comm: tar Not tainted 5.1.0 #1
Hardware name: Sapphire-RK3399 Board (DT)
pstate: 00000005 (nzcv daif -PAN -UAO)
pc : __d_lookup+0x58/0x198
lr : d_lookup+0x38/0x68
sp : ffff0000126e3ba0
x29: ffff0000126e3ba0 x28: ffff0000126e3d68
x27: 0000000000000000 x26: ffff80008201d300
x25: 0000000000000001 x24: ffffffffffffffff
x23: 00000000ce986489 x22: 0000000000000000
x21: 0000000000000001 x20: ffff0000126e3d68
x19: 0000880001000000 x18: 0000000000000000
x17: 0000000000000000 x16: 0000000000000000
x15: 0000000000000000 x14: 0000000000000000
x13: 0000000000000000 x12: 0000000000000000
x11: fefefefefefefeff x10: a4d0a4a8a4fea3d0
x9 : 2f062c662d62dfa7 x8 : f2025989e6593ef3
x7 : b24a95208032f7e2 x6 : 0000000000000001
x5 : 0000000000000000 x4 : ffff0000126e3d68
x3 : ffff000010828a68 x2 : ffff000010828000
x1 : ffff8000f3000000 x0 : 00000000000674c3
Call trace:
__d_lookup+0x58/0x198
d_lookup+0x38/0x68
path_openat+0x4a8/0xfb8
do_filp_open+0x60/0xd8
do_sys_open+0x144/0x1f8
__arm64_sys_openat+0x20/0x28
el0_svc_handler+0x68/0xd8
el0_svc+0x8/0xc
Code: 92800018 a9025bf5 d2800016 52800035 (b9401a62)
---[ end trace 8d5c8dc953aa6402 ]---

This trace is from v5.2.0-rc1:

Unable to handle kernel paging request at virtual address 0000880001000018
Mem abort info:
ESR = 0x96000004
Exception class = DABT (current EL), IL = 32 bits
SET = 0, FnV = 0
EA = 0, S1PTW = 0
Data abort info:
ISV = 0, ISS = 0x00000004
CM = 0, WnR = 0
user pgtable: 4k pages, 48-bit VAs, pgdp = 000000004850c69c
[0000880001000018] pgd=0000000000000000
Internal error: Oops: 96000004 [#1] SMP
Process read_sensors (pid: 926, stack limit = 0x00000000aaf00007)
CPU: 0 PID: 926 Comm: read_sensors Not tainted 5.2.0-rc1 #1
Hardware name: Sapphire-RK3399 Board (DT)
pstate: 00000005 (nzcv daif -PAN -UAO)
pc : __d_lookup+0x58/0x198
lr : d_lookup+0x38/0x68
sp : ffff000011ee3c60
x29: ffff000011ee3c60 x28: ffff000011ee3d98
x27: 0000000000000000 x26: ffff8000f28083c0
x25: 0000000000000276 x24: ffffffffffffffff
x23: 00000000ce97b3cf x22: 0000000000000000
x21: 0000000000000001 x20: ffff000011ee3d98
x19: 0000880001000000 x18: 0000000000000000
x17: 0000000000000002 x16: 0000000000000001
x15: ffff8000e4b3a8c8 x14: ffffffffffffffff
x13: ffff000011ee3db8 x12: ffff000011ee3dad
x11: 0000000000000000 x10: ffff000011ee3d20
x9 : 00000000ffffffd8 x8 : 000000000000039e
x7 : 0000000000000000 x6 : 0000000000000002
x5 : 61c8864680b583eb x4 : 42bed11fefc04553
x3 : ffff000010828a68 x2 : ffff000010828000
x1 : ffff8000f3000000 x0 : 00000000000674bd
Call trace:
__d_lookup+0x58/0x198
d_lookup+0x38/0x68
d_hash_and_lookup+0x50/0x68
proc_flush_task+0x98/0x198
release_task+0x60/0x4b8
do_exit+0x680/0xa68
__arm64_sys_exit+0x14/0x18
el0_svc_handler+0x68/0xd8
el0_svc+0x8/0xc
Code: 92800018 a9025bf5 d2800016 52800035 (b9401a62)
---[ end trace c9b8ee5d6aa547ae ]---

This trace is from v5.2.0-rc1 while executing 'git pull -r' from f2fs. It
got repeated several times:

Unable to handle kernel paging request at virtual address 0000000000fffffc
Mem abort info:
ESR = 0x96000004
Exception class = DABT (current EL), IL = 32 bits
SET = 0, FnV = 0
EA = 0, S1PTW = 0
Data abort info:
ISV = 0, ISS = 0x00000004
CM = 0, WnR = 0
user pgtable: 4k pages, 48-bit VAs, pgdp = 0000000092bdb9cd
[0000000000fffffc] pgd=0000000000000000
Internal error: Oops: 96000004 [#2] SMP
Process git (pid: 2996, stack limit = 0x000000004b733f9b)
CPU: 5 PID: 2996 Comm: git Tainted: G D 5.2.0-rc1 #1
Hardware name: Sapphire-RK3399 Board (DT)
pstate: 00000005 (nzcv daif -PAN -UAO)
pc : __d_lookup_rcu+0x68/0x198
lr : lookup_fast+0x44/0x2e8
sp : ffff000013f83aa0
x29: ffff000013f83aa0 x28: 00000000ce9798e9
x27: ffffffffffffffff x26: 0000000000000015
x25: ffff800009268043 x24: ffff000013f83b6c
x23: 0000000000000005 x22: 00000015ce9798e9
x21: ffff800039a7a780 x20: 0000000000000000
x19: 0000000001000000 x18: 0000000000000000
x17: 0000000000000000 x16: 0000000000000000
x15: 0000000000000000 x14: 0000000000000000
x13: 0000000000000000 x12: 0000000000000000
x11: fefefefefefefeff x10: d0d0d0b3b3fea4a3
x9 : f2862b1e24d6cb78 x8 : fac1836b95d6b53a
x7 : c1462108f502da45 x6 : 0847a816d22e0a31
x5 : ffff800009268043 x4 : ffff8000f3000000
x3 : ffff000013f83c88 x2 : ffff000013f83b6c
x1 : 00000000000674bc x0 : ffff800039a7a780
Call trace:
__d_lookup_rcu+0x68/0x198
lookup_fast+0x44/0x2e8
walk_component+0x34/0x2e0
path_lookupat.isra.0+0x5c/0x1e0
filename_lookup+0x78/0xf0
user_path_at_empty+0x44/0x58
vfs_statx+0x70/0xd0
__se_sys_newfstatat+0x20/0x40
__arm64_sys_newfstatat+0x18/0x20
el0_svc_handler+0x68/0xd8
el0_svc+0x8/0xc
Code: 9280001b 14000003 f9400273 b4000793 (b85fc265)
---[ end trace c9b8ee5d6aa547af ]---

This trace is from v5.2.0-rc1 while executing 'rm -rf' the directory
affected from the previous trace:

Unable to handle kernel paging request at virtual address 0000000001000018
Mem abort info:
ESR = 0x96000004
Exception class = DABT (current EL), IL = 32 bits
SET = 0, FnV = 0
EA = 0, S1PTW = 0
Data abort info:
ISV = 0, ISS = 0x00000004
CM = 0, WnR = 0
user pgtable: 4k pages, 48-bit VAs, pgdp = 00000000649981ae
[0000000001000018] pgd=0000000000000000
Internal error: Oops: 96000004 [#10] SMP
Process rm (pid: 6401, stack limit = 0x00000000e524cae1)
CPU: 5 PID: 6401 Comm: rm Tainted: G D 5.2.0-rc1 #1
Hardware name: Sapphire-RK3399 Board (DT)
pstate: 00000005 (nzcv daif -PAN -UAO)
pc : __d_lookup+0x58/0x198
lr : d_lookup+0x38/0x68
sp : ffff000016993d00
x29: ffff000016993d00 x28: ffff000016993e70
x27: 0000000000000000 x26: ffff800039a7a780
x25: 0000000056000000 x24: ffffffffffffffff
x23: 00000000ce9798e9 x22: 0000000000000000
x21: 0000000000000001 x20: ffff000016993e70
x19: 0000000001000000 x18: 0000000000000000
x17: 0000000000000000 x16: 0000000000000000
x15: 0000000000000000 x14: 0000000000000000
x13: 0000000000000000 x12: 0000000000000000
x11: fefefefefefefeff x10: d0d0d0b3b3fea4a3
x9 : f2862b1e24d6cb78 x8 : fac1836b95d6b53a
x7 : c1462108f502da45 x6 : 00000000ffffffff
x5 : 0000000000000000 x4 : ffff8000eb31d500
x3 : ffff000010828a68 x2 : ffff000010828000
x1 : ffff8000f3000000 x0 : 00000000000674bc
Call trace:
__d_lookup+0x58/0x198
d_lookup+0x38/0x68
lookup_dcache+0x20/0x80
__lookup_hash+0x20/0xc8
do_unlinkat+0x10c/0x278
__arm64_sys_unlinkat+0x34/0x60
el0_svc_handler+0x68/0xd8
el0_svc+0x8/0xc
Code: 92800018 a9025bf5 d2800016 52800035 (b9401a62)
---[ end trace c9b8ee5d6aa547b7 ]---

Regards,
Vicenç.