diff options
author | eivind <eivind@FreeBSD.org> | 1998-12-22 00:44:11 +0000 |
---|---|---|
committer | eivind <eivind@FreeBSD.org> | 1998-12-22 00:44:11 +0000 |
commit | a4213663c9a0665ca27785031ebf9716429b3061 (patch) | |
tree | 13cf93391498584961228593a19bb3232c1e8d47 | |
parent | a0317115f84f3edf6aceb0ae00c972f0602134a9 (diff) | |
download | FreeBSD-src-a4213663c9a0665ca27785031ebf9716429b3061.zip FreeBSD-src-a4213663c9a0665ca27785031ebf9716429b3061.tar.gz |
Check return value of tsleep(). I've checked of all call points -
there does not seem to be a problem with this.
PR: kern/8732
Analysis by: David G Andersen <danderse@cs.utah.edu>
Tested by: Alfred Perlstein <bright@hotjobs.com>
-rw-r--r-- | sys/kern/vfs_export.c | 11 | ||||
-rw-r--r-- | sys/kern/vfs_subr.c | 11 |
2 files changed, 14 insertions, 8 deletions
diff --git a/sys/kern/vfs_export.c b/sys/kern/vfs_export.c index 2b26fd7..985b9c6 100644 --- a/sys/kern/vfs_export.c +++ b/sys/kern/vfs_export.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95 - * $Id: vfs_subr.c,v 1.174 1998/12/04 22:54:51 archie Exp $ + * $Id: vfs_subr.c,v 1.175 1998/12/21 23:38:33 eivind Exp $ */ /* @@ -579,9 +579,12 @@ vinvalbuf(vp, flags, cred, p, slpflag, slptimeo) s = splbio(); while (vp->v_numoutput) { vp->v_flag |= VBWAIT; - tsleep((caddr_t)&vp->v_numoutput, - slpflag | (PRIBIO + 1), - "vinvlbuf", slptimeo); + error = tsleep((caddr_t)&vp->v_numoutput, + slpflag | (PRIBIO + 1), "vinvlbuf", slptimeo); + if (error) { + splx(s); + return (error); + } } if (!TAILQ_EMPTY(&vp->v_dirtyblkhd)) { splx(s); diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 2b26fd7..985b9c6 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95 - * $Id: vfs_subr.c,v 1.174 1998/12/04 22:54:51 archie Exp $ + * $Id: vfs_subr.c,v 1.175 1998/12/21 23:38:33 eivind Exp $ */ /* @@ -579,9 +579,12 @@ vinvalbuf(vp, flags, cred, p, slpflag, slptimeo) s = splbio(); while (vp->v_numoutput) { vp->v_flag |= VBWAIT; - tsleep((caddr_t)&vp->v_numoutput, - slpflag | (PRIBIO + 1), - "vinvlbuf", slptimeo); + error = tsleep((caddr_t)&vp->v_numoutput, + slpflag | (PRIBIO + 1), "vinvlbuf", slptimeo); + if (error) { + splx(s); + return (error); + } } if (!TAILQ_EMPTY(&vp->v_dirtyblkhd)) { splx(s); |