Bug 256868 - lock order reversal in vfs_mount when mounting ZFS based jail
Summary: lock order reversal in vfs_mount when mounting ZFS based jail
Status: New
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: CURRENT
Hardware: arm64 Any
: --- Affects Some People
Assignee: freebsd-fs (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-06-28 09:44 UTC by pr
Modified: 2021-06-28 20:01 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description pr 2021-06-28 09:44:24 UTC
Hi,
I can reproduce under aarch64 a bug that possibly has been around for quite some time and reported as amd64: please check #142878 #128633 or #210906 among (possibly) others.

lock order reversal:
 1st 0xffffa00035320af0 zfs (zfs, lockmgr) @ /usr/src/sys/kern/vfs_mount.c:1108
 2nd 0xffffa0201564ecb0 devfs (devfs, lockmgr) @ /usr/src/sys/kern/vfs_mount.c:1120
lock order devfs -> zfs established at:
#0 0xffff0000004dd774 at witness_checkorder+0x438
#1 0xffff000000441b4c at lockmgr_xlock+0x50
#2 0xffff00000056a9d4 at _vn_lock+0x54
#3 0xffff00000054b440 at vfs_domount+0xd74
#4 0xffff000000549480 at vfs_donmount+0x2b8
#5 0xffff00000054def8 at kernel_mount+0x4c
#6 0xffff000000550610 at parse_mount+0x49c
#7 0xffff00000054eea8 at vfs_mountroot+0x6d4
#8 0xffff0000003fd668 at start_init+0x24
#9 0xffff00000042a344 at fork_exit+0x74
#10 0xffff00000076f7bc at fork_trampoline+0x14
lock order zfs -> devfs attempted at:
#0 0xffff0000004ddf48 at witness_checkorder+0xc0c
#1 0xffff000000441b4c at lockmgr_xlock+0x50
#2 0xffff00000056a9d4 at _vn_lock+0x54
#3 0xffff00000054b440 at vfs_domount+0xd74
#4 0xffff000000549480 at vfs_donmount+0x2b8
#5 0xffff000000549188 at sys_nmount+0x60
#6 0xffff000000770094 at do_el0_sync+0x4a0
#7 0xffff00000074fa1c at handle_el0_sync+0x90

This is running
# uname -a
FreeBSD asn 14.0-CURRENT FreeBSD 14.0-CURRENT #0 main-n247543-33e1287b6a54: Mon Jun 28 10:31:58 CEST 2021     root@asn:/usr/obj/usr/src/arm64.aarch64/sys/GENERIC  arm64