summaryrefslogtreecommitdiffstats
path: root/sys/powerpc
diff options
context:
space:
mode:
authordillon <dillon@FreeBSD.org>1999-09-20 19:08:48 +0000
committerdillon <dillon@FreeBSD.org>1999-09-20 19:08:48 +0000
commite8761b4e052785153d92b664a5dbe32e4a1de18e (patch)
treedcac6780728b4221aa67e14342e5541829c1b0c5 /sys/powerpc
parent93e77b056762475c3c25ed8a6e2f428c8969b448 (diff)
downloadFreeBSD-src-e8761b4e052785153d92b664a5dbe32e4a1de18e.zip
FreeBSD-src-e8761b4e052785153d92b664a5dbe32e4a1de18e.tar.gz
Fix bug in pipe code relating to writes of mmap'd but illegal address
spaces which cross a segment boundry in the page table. pmap_kextract() is not designed for access to the user space portion of the page table and cannot handle the null-page-directory-entry case. The fix is to have vm_fault_quick() return a success or failure which is then used to avoid calling pmap_kextract().
Diffstat (limited to 'sys/powerpc')
-rw-r--r--sys/powerpc/aim/vm_machdep.c8
-rw-r--r--sys/powerpc/powerpc/vm_machdep.c8
2 files changed, 10 insertions, 6 deletions
diff --git a/sys/powerpc/aim/vm_machdep.c b/sys/powerpc/aim/vm_machdep.c
index 2f0dabb..a77458c 100644
--- a/sys/powerpc/aim/vm_machdep.c
+++ b/sys/powerpc/aim/vm_machdep.c
@@ -97,15 +97,17 @@
/*
* quick version of vm_fault
*/
-void
+int
vm_fault_quick(v, prot)
caddr_t v;
int prot;
{
+ int r;
if (prot & VM_PROT_WRITE)
- subyte(v, fubyte(v));
+ r = subyte(v, fubyte(v));
else
- fubyte(v);
+ r = fubyte(v);
+ return(r);
}
/*
diff --git a/sys/powerpc/powerpc/vm_machdep.c b/sys/powerpc/powerpc/vm_machdep.c
index 2f0dabb..a77458c 100644
--- a/sys/powerpc/powerpc/vm_machdep.c
+++ b/sys/powerpc/powerpc/vm_machdep.c
@@ -97,15 +97,17 @@
/*
* quick version of vm_fault
*/
-void
+int
vm_fault_quick(v, prot)
caddr_t v;
int prot;
{
+ int r;
if (prot & VM_PROT_WRITE)
- subyte(v, fubyte(v));
+ r = subyte(v, fubyte(v));
else
- fubyte(v);
+ r = fubyte(v);
+ return(r);
}
/*
OpenPOWER on IntegriCloud