Re: Panic during devfs ruleset operations on 6.0

From: Kris Kennaway <kris_at_obsecurity.org>
Date: Fri, 29 Jul 2005 15:39:07 -0400
On Mon, Jul 25, 2005 at 12:15:49PM -0400, Kris Kennaway wrote:
> I'm getting the following on multiple 6.0 machines (UP and SMP):
> 
> panic: ruleset 10 already running
> db> wh 3747
> Tracing pid 3747 tid 100279 td 0xc5d80300
> kdb_enter(c08fffa1,1,c08f93ee,ea2cfb58,c5d80300) at kdb_enter+0x30
> panic(c08f93ee,a,3,8002440b,c5b666c0) at panic+0x13d
> devfs_ruleset_applydm(cc0d3820,cb22fa00,0,c5d80300,cb22fa00) at devfs_ruleset_applydm+0x29
> devfs_rules_ioctl(c5c2c400,8002440b,c5b666c0,c5d80300,c095cd80) at devfs_rules_ioctl+0x45a
> devfs_rioctl(ea2cfbf0,c0927fa3,c08161eb,c8b91660,0) at devfs_rioctl+0x90
> VOP_IOCTL_APV(c095cd80,ea2cfbf0,ea2cfc47,ea2cfc48,c09ad320) at VOP_IOCTL_APV+0xc4
> vn_ioctl(cb933990,8002440b,c5b666c0,cc047680,c5d80300) at vn_ioctl+0x18f
> ioctl(c5d80300,ea2cfd04,c,28102000,3) at ioctl+0x45d
> syscall(3b,3b,3b,bfbfdf58,bfbfe0f1) at syscall+0x2a2
> Xint0x80_syscall() at Xint0x80_syscall+0x1f
> --- syscall (54, FreeBSD ELF32, ioctl), eip = 0x280c007f, esp = 0xbfbfdeac, ebp = 0xbfbfdec8 ---
> 
> It comes from running the following operations:
> 
>         mount -t devfs foo ${chroot}/dev
>         devfs -m ${chroot}/dev ruleset 10
>         devfs -m ${chroot}/dev rule add path 'md*' hide
>         devfs -m ${chroot}/dev rule applyset
> 
> These devfs operations are needed to work around another devfs panic,
> which occurs when device nodes are removed from inside a devfs mount
> at the same time the devfs is unmounted.
> 
> This panic is going to be very disruptive for the 6.0 package builds
> until it can be fixed.

Making devfs !MPSAFE seems to be an appropriate workaround for this
problem (which is a race between two devfs(8) processes), i.e. remove
the following:

devfs_vfsops.c: mp->mnt_kern_flag |= MNTK_MPSAFE;

Kris
Received on Fri Jul 29 2005 - 17:39:16 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:40 UTC