summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authordyson <dyson@FreeBSD.org>1996-08-15 06:45:01 +0000
committerdyson <dyson@FreeBSD.org>1996-08-15 06:45:01 +0000
commitbe503a23b55ca2288ad16edac599aa838cda8eb4 (patch)
tree3f8d5dd4ee40998f1e4fca0e937036a8c8856c0a /sys
parent67b80e1b472a60e6f993606b4977c361238a5267 (diff)
downloadFreeBSD-src-be503a23b55ca2288ad16edac599aa838cda8eb4.zip
FreeBSD-src-be503a23b55ca2288ad16edac599aa838cda8eb4.tar.gz
Certain vnode buffer list operations were not being spl protected,
and they needed to be. Brelse for example can be called at interrupt level, and the buffer list operations were not being protected from it.
Diffstat (limited to 'sys')
-rw-r--r--sys/kern/vfs_export.c6
-rw-r--r--sys/kern/vfs_subr.c6
2 files changed, 10 insertions, 2 deletions
diff --git a/sys/kern/vfs_export.c b/sys/kern/vfs_export.c
index 3070b3e..af966dd 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.56 1996/07/24 21:21:43 phk Exp $
+ * $Id: vfs_subr.c,v 1.57 1996/07/30 18:00:25 bde Exp $
*/
/*
@@ -639,11 +639,14 @@ reassignbuf(bp, newvp)
register struct vnode *newvp;
{
register struct buflists *listheadp;
+ int s;
if (newvp == NULL) {
printf("reassignbuf: NULL");
return;
}
+
+ s = splbio();
/*
* Delete from old vnode list, if on one.
*/
@@ -670,6 +673,7 @@ reassignbuf(bp, newvp)
listheadp = &newvp->v_cleanblkhd;
bufinsvn(bp, listheadp);
}
+ splx(s);
}
#ifndef DEVFS_ROOT
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 3070b3e..af966dd 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.56 1996/07/24 21:21:43 phk Exp $
+ * $Id: vfs_subr.c,v 1.57 1996/07/30 18:00:25 bde Exp $
*/
/*
@@ -639,11 +639,14 @@ reassignbuf(bp, newvp)
register struct vnode *newvp;
{
register struct buflists *listheadp;
+ int s;
if (newvp == NULL) {
printf("reassignbuf: NULL");
return;
}
+
+ s = splbio();
/*
* Delete from old vnode list, if on one.
*/
@@ -670,6 +673,7 @@ reassignbuf(bp, newvp)
listheadp = &newvp->v_cleanblkhd;
bufinsvn(bp, listheadp);
}
+ splx(s);
}
#ifndef DEVFS_ROOT
OpenPOWER on IntegriCloud