diff options
author | tegge <tegge@FreeBSD.org> | 2001-10-15 23:02:54 +0000 |
---|---|---|
committer | tegge <tegge@FreeBSD.org> | 2001-10-15 23:02:54 +0000 |
commit | 56f1506892a4ede6ebe6344193203f6effe81914 (patch) | |
tree | 35f2186849204c9c2fd6d7b0888f4a282ec46b19 | |
parent | 0be9af6925b4c82398adcb15e88a32b812d519be (diff) | |
download | FreeBSD-src-56f1506892a4ede6ebe6344193203f6effe81914.zip FreeBSD-src-56f1506892a4ede6ebe6344193203f6effe81914.tar.gz |
Don't use an uninitialized field reserved for callers in the bio structure
passed to swap_pager_strategy(). Instead, use a field reserved for drivers
and initialize it before usage.
Reviewed by: dillon
-rw-r--r-- | sys/vm/swap_pager.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c index 711a00f..b8880ef 100644 --- a/sys/vm/swap_pager.c +++ b/sys/vm/swap_pager.c @@ -888,6 +888,7 @@ swap_pager_strategy(vm_object_t object, struct bio *bp) bp->bio_error = 0; bp->bio_flags &= ~BIO_ERROR; bp->bio_resid = bp->bio_bcount; + *(u_int *) &bp->bio_driver1 = 0; start = bp->bio_pblkno; count = howmany(bp->bio_bcount, PAGE_SIZE); @@ -2029,7 +2030,7 @@ vm_pager_chain_iodone(struct buf *nbp) u_int *count; bp = nbp->b_caller1; - count = (u_int *)&(bp->bio_caller1); + count = (u_int *)&(bp->bio_driver1); if (bp != NULL) { if (nbp->b_ioflags & BIO_ERROR) { bp->bio_flags |= BIO_ERROR; @@ -2068,7 +2069,7 @@ getchainbuf(struct bio *bp, struct vnode *vp, int flags) GIANT_REQUIRED; nbp = getpbuf(NULL); - count = (u_int *)&(bp->bio_caller1); + count = (u_int *)&(bp->bio_driver1); nbp->b_caller1 = bp; ++(*count); @@ -2110,7 +2111,7 @@ waitchainbuf(struct bio *bp, int limit, int done) u_int *count; GIANT_REQUIRED; - count = (u_int *)&(bp->bio_caller1); + count = (u_int *)&(bp->bio_driver1); s = splbio(); while (*count > limit) { bp->bio_flags |= BIO_FLAG1; |