From 22883e3c684103cde4bf6e002fb4e1f30fdb466e Mon Sep 17 00:00:00 2001 From: Matt Jacob Date: Tue, 2 Oct 2001 18:34:20 +0000 Subject: [PATCH] Fix problem where a user buffer outside of the area being tested will be corrupted. PR: 29194 Obtained from: Tor.Egge@fast.no MFC after: 2 weeks --- sys/alpha/alpha/vm_machdep.c | 2 +- sys/amd64/amd64/vm_machdep.c | 2 +- sys/i386/i386/vm_machdep.c | 2 +- sys/ia64/ia64/vm_machdep.c | 2 +- sys/powerpc/aim/vm_machdep.c | 2 +- sys/powerpc/powerpc/vm_machdep.c | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/sys/alpha/alpha/vm_machdep.c b/sys/alpha/alpha/vm_machdep.c index 6e302cdf828..076139dcd3f 100644 --- a/sys/alpha/alpha/vm_machdep.c +++ b/sys/alpha/alpha/vm_machdep.c @@ -303,7 +303,7 @@ vmapbuf(bp) * Do the vm_fault if needed; do the copy-on-write thing * when reading stuff off device into memory. */ - vm_fault_quick(addr, + vm_fault_quick((addr >= bp->b_data) ? addr : bp->b_data, (bp->b_iocmd == BIO_READ)?(VM_PROT_READ|VM_PROT_WRITE):VM_PROT_READ); pa = trunc_page(pmap_kextract((vm_offset_t) addr)); if (pa == 0) diff --git a/sys/amd64/amd64/vm_machdep.c b/sys/amd64/amd64/vm_machdep.c index 573e1f11e7d..2a1dc22ee8a 100644 --- a/sys/amd64/amd64/vm_machdep.c +++ b/sys/amd64/amd64/vm_machdep.c @@ -357,7 +357,7 @@ vmapbuf(bp) * Do the vm_fault if needed; do the copy-on-write thing * when reading stuff off device into memory. */ - vm_fault_quick(addr, + vm_fault_quick((addr >= bp->b_data) ? addr : bp->b_data, (bp->b_iocmd == BIO_READ)?(VM_PROT_READ|VM_PROT_WRITE):VM_PROT_READ); pa = trunc_page(pmap_kextract((vm_offset_t) addr)); if (pa == 0) diff --git a/sys/i386/i386/vm_machdep.c b/sys/i386/i386/vm_machdep.c index 573e1f11e7d..2a1dc22ee8a 100644 --- a/sys/i386/i386/vm_machdep.c +++ b/sys/i386/i386/vm_machdep.c @@ -357,7 +357,7 @@ vmapbuf(bp) * Do the vm_fault if needed; do the copy-on-write thing * when reading stuff off device into memory. */ - vm_fault_quick(addr, + vm_fault_quick((addr >= bp->b_data) ? addr : bp->b_data, (bp->b_iocmd == BIO_READ)?(VM_PROT_READ|VM_PROT_WRITE):VM_PROT_READ); pa = trunc_page(pmap_kextract((vm_offset_t) addr)); if (pa == 0) diff --git a/sys/ia64/ia64/vm_machdep.c b/sys/ia64/ia64/vm_machdep.c index 882195392d6..81c5c4a95a5 100644 --- a/sys/ia64/ia64/vm_machdep.c +++ b/sys/ia64/ia64/vm_machdep.c @@ -356,7 +356,7 @@ vmapbuf(bp) * Do the vm_fault if needed; do the copy-on-write thing * when reading stuff off device into memory. */ - vm_fault_quick(addr, + vm_fault_quick((addr >= bp->b_data) ? addr : bp->b_data, (bp->b_iocmd == BIO_READ)?(VM_PROT_READ|VM_PROT_WRITE):VM_PROT_READ); pa = trunc_page(pmap_kextract((vm_offset_t) addr)); if (pa == 0) diff --git a/sys/powerpc/aim/vm_machdep.c b/sys/powerpc/aim/vm_machdep.c index c2110bba9a6..baf59a04637 100644 --- a/sys/powerpc/aim/vm_machdep.c +++ b/sys/powerpc/aim/vm_machdep.c @@ -218,7 +218,7 @@ vmapbuf(bp) * Do the vm_fault if needed; do the copy-on-write thing * when reading stuff off device into memory. */ - vm_fault_quick(addr, + vm_fault_quick((addr >= bp->b_data) ? addr : bp->b_data, (bp->b_iocmd == BIO_READ)?(VM_PROT_READ|VM_PROT_WRITE):VM_PROT_READ); pa = trunc_page(pmap_kextract((vm_offset_t) addr)); if (pa == 0) diff --git a/sys/powerpc/powerpc/vm_machdep.c b/sys/powerpc/powerpc/vm_machdep.c index c2110bba9a6..baf59a04637 100644 --- a/sys/powerpc/powerpc/vm_machdep.c +++ b/sys/powerpc/powerpc/vm_machdep.c @@ -218,7 +218,7 @@ vmapbuf(bp) * Do the vm_fault if needed; do the copy-on-write thing * when reading stuff off device into memory. */ - vm_fault_quick(addr, + vm_fault_quick((addr >= bp->b_data) ? addr : bp->b_data, (bp->b_iocmd == BIO_READ)?(VM_PROT_READ|VM_PROT_WRITE):VM_PROT_READ); pa = trunc_page(pmap_kextract((vm_offset_t) addr)); if (pa == 0)