summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2010-01-04 19:26:14 +1030
committerGreg Kroah-Hartman <gregkh@suse.de>2010-01-06 15:05:19 -0800
commit370b7588553ff0dc89c8b9436a935e2b7fe0207d (patch)
tree081d15b02e50dcfd0042ae36771cbae533adf828
parent743c078e0e10e41b8b10f3c07973068d76fcc866 (diff)
lguest: fix bug in setting guest GDT entry
commit 3e27249c84beed1c79d767b350e52ad038db9053 upstream. We kill the guest, but then we blatt random stuff. Reported-by: Dan Carpenter <error27@gmail.com> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/lguest/segments.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/lguest/segments.c b/drivers/lguest/segments.c
index 951c57b0a7e0..ede46581351a 100644
--- a/drivers/lguest/segments.c
+++ b/drivers/lguest/segments.c
@@ -179,8 +179,10 @@ void load_guest_gdt_entry(struct lg_cpu *cpu, u32 num, u32 lo, u32 hi)
* We assume the Guest has the same number of GDT entries as the
* Host, otherwise we'd have to dynamically allocate the Guest GDT.
*/
- if (num >= ARRAY_SIZE(cpu->arch.gdt))
+ if (num >= ARRAY_SIZE(cpu->arch.gdt)) {
kill_guest(cpu, "too many gdt entries %i", num);
+ return;
+ }
/* Set it up, then fix it. */
cpu->arch.gdt[num].a = lo;