diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2010-01-04 19:26:14 +1030 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-01-04 12:33:33 -0800 |
commit | 3e27249c84beed1c79d767b350e52ad038db9053 (patch) | |
tree | 56fbbd5e952c4b01649c5b4f84dc7ce135cdc6ee /drivers/lguest/segments.c | |
parent | 741f21e811752b440c505bf0149c4d16e9f3160d (diff) | |
download | lwn-3e27249c84beed1c79d767b350e52ad038db9053.tar.gz lwn-3e27249c84beed1c79d767b350e52ad038db9053.zip |
lguest: fix bug in setting guest GDT entry
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>
Cc: stable@kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/lguest/segments.c')
-rw-r--r-- | drivers/lguest/segments.c | 4 |
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; |