diff options
author | jake <jake@FreeBSD.org> | 2003-06-18 17:03:04 +0000 |
---|---|---|
committer | jake <jake@FreeBSD.org> | 2003-06-18 17:03:04 +0000 |
commit | ed9decb2f8d77ae15cb9c1311910c062a844525c (patch) | |
tree | 5c4279f5d0349999e97145e93a8e8573c39c6910 /sys/sparc64 | |
parent | 91f60287e48f9840634f66dac246ddd93511307d (diff) | |
download | FreeBSD-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.c | 2 |
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); |