20962612f6
If KPTI is not enabled, the current value of CR3 is the correct page tables when the exception happened in all cases. If KPTI is enabled, and the excepting thread was in user mode, then a page table switch happened and the current value of CR3 is not the page tables when the fault happened. Get it out of the thread object instead. Fixes two problems: - Divergent exception loop if we crash when _current is a dummy thread or its page table pointer stored in the thread object is NULL or uninitialized - Printing the wrong CR3 value on exceptions from user mode in the register dump Signed-off-by: Andrew Boie <andrew.p.boie@intel.com> |
||
---|---|---|
.. | ||
core | ||
include | ||
CMakeLists.txt | ||
Kconfig | ||
gen_gdt.py | ||
gen_idt.py | ||
ia32.cmake | ||
intel64.cmake |