Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Jun 2016 21:49:24 +0300
From:      Andriy Gapon <avg@FreeBSD.org>
To:        Konstantin Belousov <kib@FreeBSD.org>, src-committers@FreeBSD.org, svn-src-all@FreeBSD.org, svn-src-head@FreeBSD.org
Subject:   Re: svn commit: r301929 - head/sys/kern
Message-ID:  <5200834c-c3d4-6331-eecb-155e6453ba96@FreeBSD.org>
In-Reply-To: <201606151556.u5FFu3pt032257@repo.freebsd.org>
References:  <201606151556.u5FFu3pt032257@repo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5200834c-c3d4-6331-eecb-155e6453ba96>