mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
Check for the entire kernel range for temporarily cleared PMD entries.
From: Jan Beulich <JBeulich@novell.com> Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
This commit is contained in:
1 parent
3d77bc4d6b
commit
668fe87cad
1 file changed
+4
-4
@@ -366,12 +366,12 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs,
|
||||
*/
|
||||
if (unlikely(address >= TASK_SIZE64)) {
|
||||
/*
|
||||
* Don't check for the module range here: its PML4
|
||||
* is always initialized because it's shared with the main
|
||||
* kernel text. Only vmalloc may need PML4 syncups.
|
||||
* Must check for the entire kernel range here: with writable
|
||||
* page tables the hypervisor may temporarily clear PMD
|
||||
* entries.
|
||||
*/
|
||||
if (!(error_code & (PF_RSVD|PF_USER|PF_PROT)) &&
|
||||
((address >= VMALLOC_START && address < VMALLOC_END))) {
|
||||
address >= PAGE_OFFSET) {
|
||||
if (vmalloc_fault(address) < 0)
|
||||
goto bad_area_nosemaphore;
|
||||
return;
|
||||
|
||||