Skip to content

Commit

Permalink
lguest: don't share Switcher PTE pages between guests.
Browse files Browse the repository at this point in the history
We currently use the whole top PGD entry for the switcher, so we
simply share a fixed page of PTEs between all guests (actually, it's
one per Host CPU, to ensure isolation between guests).

Changes to a scheme where every guest has its own mappings.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
  • Loading branch information
Rusty Russell committed Apr 22, 2013
1 parent f1f394b commit 3412b6a
Show file tree
Hide file tree
Showing 3 changed files with 107 additions and 166 deletions.
10 changes: 1 addition & 9 deletions drivers/lguest/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -333,15 +333,10 @@ static int __init init(void)
if (err)
goto out;

/* Now we set up the pagetable implementation for the Guests. */
err = init_pagetables(lg_switcher_pages);
if (err)
goto unmap;

/* We might need to reserve an interrupt vector. */
err = init_interrupts();
if (err)
goto free_pgtables;
goto unmap;

/* /dev/lguest needs to be registered. */
err = lguest_device_init();
Expand All @@ -356,8 +351,6 @@ static int __init init(void)

free_interrupts:
free_interrupts();
free_pgtables:
free_pagetables();
unmap:
unmap_switcher();
out:
Expand All @@ -369,7 +362,6 @@ static void __exit fini(void)
{
lguest_device_remove();
free_interrupts();
free_pagetables();
unmap_switcher();

lguest_arch_host_fini();
Expand Down
3 changes: 0 additions & 3 deletions drivers/lguest/lg.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,6 @@

#include <asm/lguest.h>

void free_pagetables(void);
int init_pagetables(struct page **switcher_pages);

struct pgdir {
unsigned long gpgdir;
pgd_t *pgdir;
Expand Down
Loading

0 comments on commit 3412b6a

Please sign in to comment.