svn commit: r301929 - head/sys/kern
Andriy Gapon
avg at FreeBSD.org
Tue Jun 21 18:50:26 UTC 2016
On 15/06/2016 18:56, Konstantin Belousov wrote:
> Author: kib
> Date: Wed Jun 15 15:56:03 2016
> New Revision: 301929
> URL: https://svnweb.freebsd.org/changeset/base/301929
>
> Log:
> Do not assume that we own the use reference on the covered vnode until
> we set MNTK_UNMOUNT flag on the mp. Otherwise parallel unmount which
> wins race with us could dereference the covered vnode, and we are
> left with the locked freed memory.
>
> Reported and tested by: pho
> Sponsored by: The FreeBSD Foundation
> Approved by: re (gjb)
> MFC after: 1 week
Kostik,
does this change fix (or is likely to fix) the following panic?
Thanks!
VNASSERT failed
0xfffff8000c926588: tag none, type VBAD
usecount 0, writecount 0, refcount 0 mountedhere 0
VNASSERT failed
0xfffff8000e95f000: tag none, type VBAD
usecount 0, writecount 0, refcount 0 mountedhere 0
flags ()
lock type zfs: EXCL by thread 0xfffff80020921a00 (pid 2017, zfs, tid
100794)
panic: No vop_unlock(0xfffff8000e95f000, 0xfffffe004df8a980)
cpuid = 2
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame
0xfffffe004df8a820
vpanic() at vpanic+0x182/frame 0xfffffe004df8a8a0
kassert_panic() at kassert_panic+0x126/frame 0xfffffe004df8a910
VOP_UNLOCK_APV() at VOP_UNLOCK_APV+0x94/frame 0xfffffe004df8a940
dounmount() at dounmount+0x138/frame 0xfffffe004df8a9c0
sys_unmount() at sys_unmount+0x35d/frame 0xfffffe004df8aae0
amd64_syscall() at amd64_syscall+0x2db/frame 0xfffffe004df8abf0
Xfast_syscall() at Xfast_syscall+0xfb/frame 0xfffffe004df8abf0
--- syscall (22, FreeBSD ELF64, sys_unmount), rip = 0x8012f4e4a, rsp =
0x7fffffffc298, rbp = 0x7fffffffc300 ---
KDB: enter: panic
[ thread pid 2017 tid 100794 ]
Stopped at kdb_enter+0x3b: movq $0,kdb_why
P.S. Not sure why two VNASSERTs are reported here, but this is copied
verbatim from a console.
> Modified:
> head/sys/kern/vfs_mount.c
--
Andriy Gapon
More information about the svn-src-head
mailing list