diff options
author | Matias Zabaljauregui <zabaljauregui@gmail.com> | 2009-05-30 14:35:49 -0400 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2009-06-12 08:57:06 -0400 |
commit | ed1dc77810159a733240ba6751c1b31023bf8dd7 (patch) | |
tree | d77ed52cd56e2cf3f5eac9d5db22ad1196e694d8 | |
parent | 7b5c806c35f6ff76b2e36a8b5b1513c8a83fcff7 (diff) |
lguest: map switcher with executable page table entries
Map switcher with executable page table entries.
(This bug didn't matter before PAE and hence NX support -- RR)
Signed-off-by: Matias Zabaljauregui <zabaljauregui@gmail.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-rw-r--r-- | drivers/lguest/core.c | 2 | ||||
-rw-r--r-- | drivers/lguest/page_tables.c | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/drivers/lguest/core.c b/drivers/lguest/core.c index 03fbc88c0023..d0298dc45d97 100644 --- a/drivers/lguest/core.c +++ b/drivers/lguest/core.c | |||
@@ -95,7 +95,7 @@ static __init int map_switcher(void) | |||
95 | * array of struct pages. It increments that pointer, but we don't | 95 | * array of struct pages. It increments that pointer, but we don't |
96 | * care. */ | 96 | * care. */ |
97 | pagep = switcher_page; | 97 | pagep = switcher_page; |
98 | err = map_vm_area(switcher_vma, PAGE_KERNEL, &pagep); | 98 | err = map_vm_area(switcher_vma, PAGE_KERNEL_EXEC, &pagep); |
99 | if (err) { | 99 | if (err) { |
100 | printk("lguest: map_vm_area failed: %i\n", err); | 100 | printk("lguest: map_vm_area failed: %i\n", err); |
101 | goto free_vma; | 101 | goto free_vma; |
diff --git a/drivers/lguest/page_tables.c b/drivers/lguest/page_tables.c index a059cf9980f7..496995370fbc 100644 --- a/drivers/lguest/page_tables.c +++ b/drivers/lguest/page_tables.c | |||
@@ -714,7 +714,7 @@ void map_switcher_in_guest(struct lg_cpu *cpu, struct lguest_pages *pages) | |||
714 | 714 | ||
715 | /* Make the last PGD entry for this Guest point to the Switcher's PTE | 715 | /* Make the last PGD entry for this Guest point to the Switcher's PTE |
716 | * page for this CPU (with appropriate flags). */ | 716 | * page for this CPU (with appropriate flags). */ |
717 | switcher_pgd = __pgd(__pa(switcher_pte_page) | __PAGE_KERNEL); | 717 | switcher_pgd = __pgd(__pa(switcher_pte_page) | __PAGE_KERNEL_EXEC); |
718 | 718 | ||
719 | cpu->lg->pgdirs[cpu->cpu_pgd].pgdir[SWITCHER_PGD_INDEX] = switcher_pgd; | 719 | cpu->lg->pgdirs[cpu->cpu_pgd].pgdir[SWITCHER_PGD_INDEX] = switcher_pgd; |
720 | 720 | ||