diff options
author | dg <dg@FreeBSD.org> | 1995-09-24 04:40:19 +0000 |
---|---|---|
committer | dg <dg@FreeBSD.org> | 1995-09-24 04:40:19 +0000 |
commit | 56e87c0fef8f6d1ee6190d87be5e8d676f3399ad (patch) | |
tree | ec7ae22a6f47f36cf360331ca966389bad1564b8 /sys/vm/swap_pager.c | |
parent | 1ca520567d1ad02f34c60adf495202e1e3cebe99 (diff) | |
download | FreeBSD-src-56e87c0fef8f6d1ee6190d87be5e8d676f3399ad.zip FreeBSD-src-56e87c0fef8f6d1ee6190d87be5e8d676f3399ad.tar.gz |
Check that the swap block is valid before including it in a cluster.
Submitted by: John Dyson
Diffstat (limited to 'sys/vm/swap_pager.c')
-rw-r--r-- | sys/vm/swap_pager.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c index 6b3751a..03c3d0f 100644 --- a/sys/vm/swap_pager.c +++ b/sys/vm/swap_pager.c @@ -39,7 +39,7 @@ * from: Utah $Hdr: swap_pager.c 1.4 91/04/30$ * * @(#)swap_pager.c 8.9 (Berkeley) 3/21/94 - * $Id: swap_pager.c,v 1.45 1995/09/06 07:08:45 dyson Exp $ + * $Id: swap_pager.c,v 1.46 1995/09/11 00:47:17 dyson Exp $ */ /* @@ -728,6 +728,8 @@ swap_pager_haspage(object, offset, before, after) int tix; if (before) { for(tix = ix - 1; tix >= 0; --tix) { + if ((swb->swb_valid & (1 << tix)) == 0) + break; if ((swb->swb_block[tix] + (ix - tix) * (PAGE_SIZE/DEV_BSIZE)) != swb->swb_block[ix]) @@ -738,6 +740,8 @@ swap_pager_haspage(object, offset, before, after) if (after) { for(tix = ix + 1; tix < SWB_NPAGES; tix++) { + if ((swb->swb_valid & (1 << tix)) == 0) + break; if ((swb->swb_block[tix] - (tix - ix) * (PAGE_SIZE/DEV_BSIZE)) != swb->swb_block[ix]) |