diff options
author | dyson <dyson@FreeBSD.org> | 1996-08-15 06:45:01 +0000 |
---|---|---|
committer | dyson <dyson@FreeBSD.org> | 1996-08-15 06:45:01 +0000 |
commit | be503a23b55ca2288ad16edac599aa838cda8eb4 (patch) | |
tree | 3f8d5dd4ee40998f1e4fca0e937036a8c8856c0a /sys | |
parent | 67b80e1b472a60e6f993606b4977c361238a5267 (diff) | |
download | FreeBSD-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.c | 6 | ||||
-rw-r--r-- | sys/kern/vfs_subr.c | 6 |
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 |