diff options
author | George Koehler <gkoehler@cvs.openbsd.org> | 2024-11-27 20:30:16 +0000 |
---|---|---|
committer | George Koehler <gkoehler@cvs.openbsd.org> | 2024-11-27 20:30:16 +0000 |
commit | 604447485e26ae6a1182cd61b6363408580182a5 (patch) | |
tree | e075203b558bfb86221812d492bb6c69da35e3ca /etc/ppp | |
parent | dfe453674fa96cf8dc55891d447f0988f9e264d0 (diff) |
In pte_insert(), if both the primary page table entry group and the
secondary pteg are full, then we delete an old pte and replace it with
the new pte. We might have set "idx" wrong and inserted the new pte
into the wrong pteg (with the wrong PTE_HID bit). This problem almost
never happened; it is rare for both ptegs to be full.
When the loop "for (try = 0; try < 16; try++)" looks for a slot for
the new pte, set "idx" to the new pte's primary pteg. Put it in the
primary pteg "idx" or secondary pteg "idx ^ pmap_ptab_mask". When we
delete the old pte, set "idx" to the old pte's primary pteg.
Eric Gosse reported a bug where the kernel crashed on an unexpected
fault. I suspect that a pte fell into the wrong "idx" and got lost.
ok kettenis@
Diffstat (limited to 'etc/ppp')
0 files changed, 0 insertions, 0 deletions