From 425497efb6b98d95a17eeaff173a3372ce318b4c Mon Sep 17 00:00:00 2001 From: art Date: Sun, 11 Aug 2002 22:32:31 +0000 Subject: Add two missing vfs_busy calls in the failure path of sysctl_vnode. Found by aaron@ NOTE - I think we need a mount-point iterator just like we have NOTE - vfs_mount_foreach_vnode. (btw. why don't we use foreach_vnode in here?) --- sys/kern/vfs_subr.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'sys/kern/vfs_subr.c') diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 3f70cc8ad1d..88978dd0c2e 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vfs_subr.c,v 1.87 2002/07/12 14:02:22 art Exp $ */ +/* $OpenBSD: vfs_subr.c,v 1.88 2002/08/11 22:32:31 art Exp $ */ /* $NetBSD: vfs_subr.c,v 1.53 1996/04/22 01:39:13 christos Exp $ */ /* @@ -1469,6 +1469,7 @@ again: if (bp + sizeof(struct e_vnode) > ewhere) { simple_unlock(&mntvnode_slock); *sizep = bp - where; + vfs_unbusy(mp, p); return (ENOMEM); } if ((error = copyout((caddr_t)&vp, @@ -1476,8 +1477,10 @@ again: sizeof(struct vnode *))) || (error = copyout((caddr_t)vp, &((struct e_vnode *)bp)->vnode, - sizeof(struct vnode)))) + sizeof(struct vnode)))) { + vfs_unbusy(mp, p); return (error); + } bp += sizeof(struct e_vnode); simple_lock(&mntvnode_slock); } -- cgit v1.2.3-59-g8ed1b