summaryrefslogtreecommitdiffstats
path: root/sys/vm
diff options
context:
space:
mode:
authortegge <tegge@FreeBSD.org>2001-10-15 23:02:54 +0000
committertegge <tegge@FreeBSD.org>2001-10-15 23:02:54 +0000
commit56f1506892a4ede6ebe6344193203f6effe81914 (patch)
tree35f2186849204c9c2fd6d7b0888f4a282ec46b19 /sys/vm
parent0be9af6925b4c82398adcb15e88a32b812d519be (diff)
downloadFreeBSD-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
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/swap_pager.c7
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;
OpenPOWER on IntegriCloud