Panic after mount() fail.

From: Pawel Jakub Dawidek <nick_at_garage.freebsd.pl>
Date: Mon, 17 Nov 2003 11:06:06 +0100
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
_at__at_ -1061,6 +1061,7 _at__at_ 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);
_at__at_ -1142,6 +1143,7 _at__at_ 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                       pawel_at_dawidek.net
UNIX Systems Programmer/Administrator     http://garage.freebsd.pl
Am I Evil? Yes, I Am!                     http://cerber.sourceforge.net

Received on Mon Nov 17 2003 - 01:06:17 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:29 UTC