diff options
author | kib <kib@FreeBSD.org> | 2015-06-10 02:27:00 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2015-06-10 02:27:00 +0000 |
commit | 6f94b985b6eec30816303099b6b38772a0e161f2 (patch) | |
tree | 1d322fe029fdefb57aa8d5be188ecab5753d6a5f /sys/kern/vfs_subr.c | |
parent | 2187b2a06e2c4352326b9615e46b8efb66e5030d (diff) | |
download | FreeBSD-src-6f94b985b6eec30816303099b6b38772a0e161f2.zip FreeBSD-src-6f94b985b6eec30816303099b6b38772a0e161f2.tar.gz |
MFC r283602:
Prevent dounmount() from acting on the freed (although type-stable)
memory by changing the interface to require the mount point to be
referenced.
MFC r283629:
Add missed {}.
Diffstat (limited to 'sys/kern/vfs_subr.c')
-rw-r--r-- | sys/kern/vfs_subr.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 7b625be..a03d516 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -3493,8 +3493,9 @@ vfs_unmountall(void) */ while(!TAILQ_EMPTY(&mountlist)) { mp = TAILQ_LAST(&mountlist, mntlist); + vfs_ref(mp); error = dounmount(mp, MNT_FORCE, td); - if (error) { + if (error != 0) { TAILQ_REMOVE(&mountlist, mp, mnt_list); /* * XXX: Due to the way in which we mount the root |