NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/48135: Bad locking for umount
The following reply was made to PR kern/48135; it has been noted by GNATS.
From: Michael van Elst <mlelstv%serpens.de@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: kern-bug-people%NetBSD.org@localhost, gnats-admin%NetBSD.org@localhost,
netbsd-bugs%NetBSD.org@localhost
Subject: Re: kern/48135: Bad locking for umount
Date: Thu, 22 Aug 2013 20:05:28 +0200
On Thu, Aug 22, 2013 at 07:42:37PM +0200, Michael van Elst wrote:
> > Btw.: I'm not able to reproduce this error here -- what exactly is
> > your setup (amd configuration etc.)
Here is another outcome of the race:
panic: lockdebug_lookup: uninitialized lock (lock=0xfffffe81e66d3050,
from=ffffffff8037e429)
breakpoint() at netbsd:breakpoint+0x5
vpanic() at netbsd:vpanic+0x136
printf_nolog() at netbsd:printf_nolog
lockdebug_abort() at netbsd:lockdebug_abort+0xb0
mutex_exit() at netbsd:mutex_exit+0xaa
vfs_busy() at netbsd:vfs_busy+0xcb
lookup_once() at netbsd:lookup_once+0x14b
namei_tryemulroot() at netbsd:namei_tryemulroot+0x457
namei() at netbsd:namei+0x2b
fd_nameiat.clone.0() at netbsd:fd_nameiat.clone.0+0x54
do_sys_statat() at netbsd:do_sys_statat+0x84
sys___lstat50() at netbsd:sys___lstat50+0x2a
syscall() at netbsd:syscall+0x94
a previous doumount completed, called vfs_destroy() and lets vfs_busy()
continue and access the freed mutex.
It's obvious that you need a lock outside the mount structure to
arbitrate this. But I'm still wondering how VFS_UMOUNT can succeed
when namei uses vnodes that reference the mount when calling vfs_busy.
Greetings,
--
Michael van Elst
Internet: mlelstv%serpens.de@localhost
"A potential Snark may lurk in every tree."
Home |
Main Index |
Thread Index |
Old Index