Hello.

There is a problem with mount(2) failures. It can cause panics.

How-to-repeat.

        # dd if=/dev/random of=/test.img bs=1m count=8
        # mdconfig -a -t vnode -f /test.img -u 25
        # mkdir -p /mnt/test
        # mount /dev/md25 /mnt/test
        (fail)
        # mount /dev/md25 /mnt/test
        (panic "Memory modified after free ...")

This is because on failure mutex is not destroyed.

Patch:

--- vfs_mount.c.orig    Sun Nov 16 15:46:56 2003
+++ vfs_mount.c Sun Nov 16 15:21:48 2003
@@ -1061,6 +1061,7 @@ update:
                        vfs_unbusy(mp, td);
                else {
                        mp->mnt_vfc->vfc_refcount--;
+                       mtx_destroy(&mp->mnt_mtx);
                        vfs_unbusy(mp, td);
 #ifdef MAC
                        mac_destroy_mount(mp);
@@ -1142,6 +1143,7 @@ update:
                vp->v_iflag &= ~VI_MOUNT;
                VI_UNLOCK(vp);
                mp->mnt_vfc->vfc_refcount--;
+               mtx_destroy(&mp->mnt_mtx);
                vfs_unbusy(mp, td);
 #ifdef MAC
                mac_destroy_mount(mp);

-- 
Pawel Jakub Dawidek                       [EMAIL PROTECTED]
UNIX Systems Programmer/Administrator     http://garage.freebsd.pl
Am I Evil? Yes, I Am!                     http://cerber.sourceforge.net

Attachment: pgp00000.pgp
Description: PGP signature

Reply via email to