summaryrefslogtreecommitdiffstats
path: root/sys/sparc64
diff options
context:
space:
mode:
authorjake <jake@FreeBSD.org>2003-06-18 17:03:04 +0000
committerjake <jake@FreeBSD.org>2003-06-18 17:03:04 +0000
commited9decb2f8d77ae15cb9c1311910c062a844525c (patch)
tree5c4279f5d0349999e97145e93a8e8573c39c6910 /sys/sparc64
parent91f60287e48f9840634f66dac246ddd93511307d (diff)
downloadFreeBSD-src-ed9decb2f8d77ae15cb9c1311910c062a844525c.zip
FreeBSD-src-ed9decb2f8d77ae15cb9c1311910c062a844525c.tar.gz
Ignore fake ttes in pmap_copy, its too hard to deal with them not having
a real vm_page right now. This fixes a panic when processes with resident device mappings fork, such as the X server.
Diffstat (limited to 'sys/sparc64')
-rw-r--r--sys/sparc64/sparc64/pmap.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/sparc64/sparc64/pmap.c b/sys/sparc64/sparc64/pmap.c
index d8b813e..8a7b1da 100644
--- a/sys/sparc64/sparc64/pmap.c
+++ b/sys/sparc64/sparc64/pmap.c
@@ -1373,6 +1373,8 @@ pmap_copy_tte(pmap_t src_pmap, pmap_t dst_pmap, struct tte *tp, vm_offset_t va)
vm_page_t m;
u_long data;
+ if ((tp->tte_data & TD_FAKE) != 0)
+ return (1);
if (tsb_tte_lookup(dst_pmap, va) == NULL) {
data = tp->tte_data &
~(TD_PV | TD_REF | TD_SW | TD_CV | TD_W);
OpenPOWER on IntegriCloud