Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 Aug 2006 10:00:47 -0400
From:      Kris Kennaway <kris@obsecurity.org>
To:        current@FreeBSD.org
Cc:        mohans@FreeBSD.org
Subject:   null pointer deref from mount/umount + rm -rf loop
Message-ID:  <20060818140047.GA53670@xor.obsecurity.org>

next in thread | raw e-mail | index | archive | help

--mYCpIKhGyMATD0i+
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

I ran mount -o ro -t nfs ...; sleep 2; umount -f nfs together with rm
-rf in a loop, and after some time the machine panicked with:

Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address   = 0x34
fault code              = supervisor write, page not present
instruction pointer     = 0x20:0xc052e22a
stack pointer           = 0x28:0xec8d7a74
frame pointer           = 0x28:0xec8d7a94
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, def32 1, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 28944 (rm)



db> wh
Tracing pid 28944 tid 100205 td 0xc5469bd0
_mtx_lock_flags(24,0,c07266be,1a3,0) at _mtx_lock_flags+0x24
vfs_ref(0,ec8d7b28,cf05a900,ec8d7ad4,c06f97a8) at vfs_ref+0x32
vop_stdgetwritemount(ec8d7af8,ec8d7b14,c05a9601,c076a780,ec8d7af8) at vop_stdgetwritemount+0x1d
VOP_GETWRITEMOUNT_APV(c076a780,ec8d7af8,f8,3,1) at VOP_GETWRITEMOUNT_APV+0x3a
vn_start_write(cf05a900,ec8d7b28,1,cfd2ea20,ffffffff) at vn_start_write+0x34
vn_close(cf05a900,5,d25e8a00,c5469bd0,c071f37b) at vn_close+0x2f
vn_closefile(c5c27798,c5469bd0,c071e535,85f,cf05a900) at vn_closefile+0x8b
fdrop_locked(c5c27798,c5469bd0,c5469bd0,c5469bd0,c076a780,0,0,cf05a900,c077e840,8201000,c5469bd0,ec8d7c20,246,246,ec8d7c40,c052e311,c077e840,cf05a900,ec8d7c50,c050fcda,3e1,c071e535,0) at fdrop_locked+0x96
closef(c5c27798,c5469bd0,c071e535,3e1,c054ad17) at closef+0x1ed
close(c5469bd0,ec8d7d04,4,0,1) at close+0x185
syscall(bfbf003b,3b,bfbf003b,8250130,804b4d8) at syscall+0x163
Xint0x80_syscall() at Xint0x80_syscall+0x1f
--- syscall (6, FreeBSD ELF32, close), eip = 0x2815ba4f, esp = 0xbfbfe69c, ebp = 0xbfbfe6b8 ---
db> show lockedvnods
Locked vnodes

0xcd8ae360: tag ufs, type VDIR
    usecount 2, writecount 0, refcount 4 mountedhere 0xd07ea548
    flags ()
    v_object 0xc6d4ac24 ref 0 pages 1
     lock type ufs: EXCL (count 1) by thread 0xcfd2ea20 (pid 28947)
        ino 353827, on dev da0s1e

0xc6769240: tag nfs, type VDIR
    usecount 0, writecount 0, refcount 88 mountedhere 0
    flags (VI_DOOMED)
    v_object 0xcce78b90 ref 0 pages 87
     lock type nfs: EXCL (count 1) by thread 0xcfd2ea20 (pid 28947)

^-- showlockedvnods hung here.

Looks like I forgot to include DEBUG_VFS_LOCKS, I'll try to recreate.

Kris


--mYCpIKhGyMATD0i+
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (FreeBSD)

iD8DBQFE5cgPWry0BWjoQKURAg9uAJ4jpDXnku+b2iwrd4b75pMC46IzrQCfSGDa
GbcpJV0+NQkxlFx8pY2OiPY=
=7us6
-----END PGP SIGNATURE-----

--mYCpIKhGyMATD0i+--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060818140047.GA53670>