aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorBruce Evans <bde@FreeBSD.org>1995-10-28 08:50:08 +0000
committerBruce Evans <bde@FreeBSD.org>1995-10-28 08:50:08 +0000
commite887950a45fbab4c4d089c379b35fca10414d51f (patch)
tree2921e6771b35a4f94b5e84d23549319b29b26533 /sys
parent7700fd358faa844b2c098d2e95f644ace4900ca5 (diff)
downloadsrc-e887950a45fbab4c4d089c379b35fca10414d51f.tar.gz
src-e887950a45fbab4c4d089c379b35fca10414d51f.zip
Call vfs_unbusy() before error returns from sysctl_vnode(). This fixes
PR 795. Set the size before one error return from sysctl_vnode() the same as before the other. The caller might want to know about the amount successfully read although the current caller doesn't.
Notes
Notes: svn path=/head/; revision=11852
Diffstat (limited to 'sys')
-rw-r--r--sys/kern/vfs_export.c10
-rw-r--r--sys/kern/vfs_subr.c10
2 files changed, 14 insertions, 6 deletions
diff --git a/sys/kern/vfs_export.c b/sys/kern/vfs_export.c
index 7cd54e5542af..d6c1cc0621a2 100644
--- a/sys/kern/vfs_export.c
+++ b/sys/kern/vfs_export.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_subr.c 8.13 (Berkeley) 4/18/94
- * $Id: vfs_subr.c,v 1.35 1995/08/11 11:31:07 davidg Exp $
+ * $Id: vfs_subr.c,v 1.36 1995/08/25 20:49:44 bde Exp $
*/
/*
@@ -1315,12 +1315,16 @@ again:
goto again;
}
if (bp + VPTRSZ + VNODESZ > ewhere) {
+ vfs_unbusy(mp);
*sizep = bp - where;
return (ENOMEM);
}
- if ((error = copyout((caddr_t) &vp, bp, VPTRSZ)) ||
- (error = copyout((caddr_t) vp, bp + VPTRSZ, VNODESZ)))
+ if ((error = copyout(&vp, bp, VPTRSZ)) ||
+ (error = copyout(vp, bp + VPTRSZ, VNODESZ))) {
+ vfs_unbusy(mp);
+ *sizep = bp - where;
return (error);
+ }
bp += VPTRSZ + VNODESZ;
}
vfs_unbusy(mp);
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 7cd54e5542af..d6c1cc0621a2 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_subr.c 8.13 (Berkeley) 4/18/94
- * $Id: vfs_subr.c,v 1.35 1995/08/11 11:31:07 davidg Exp $
+ * $Id: vfs_subr.c,v 1.36 1995/08/25 20:49:44 bde Exp $
*/
/*
@@ -1315,12 +1315,16 @@ again:
goto again;
}
if (bp + VPTRSZ + VNODESZ > ewhere) {
+ vfs_unbusy(mp);
*sizep = bp - where;
return (ENOMEM);
}
- if ((error = copyout((caddr_t) &vp, bp, VPTRSZ)) ||
- (error = copyout((caddr_t) vp, bp + VPTRSZ, VNODESZ)))
+ if ((error = copyout(&vp, bp, VPTRSZ)) ||
+ (error = copyout(vp, bp + VPTRSZ, VNODESZ))) {
+ vfs_unbusy(mp);
+ *sizep = bp - where;
return (error);
+ }
bp += VPTRSZ + VNODESZ;
}
vfs_unbusy(mp);