lguest: fix bug in setting guest GDT entry
authorRusty Russell <rusty@rustcorp.com.au>
Mon, 4 Jan 2010 08:56:14 +0000 (19:26 +1030)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 4 Jan 2010 20:33:33 +0000 (12:33 -0800)
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>
drivers/lguest/segments.c

index 951c57b0a7e075a9d927193d3c54d46ccb682545..ede46581351a04d9a635aee91bec38d69c67c76f 100644 (file)
@@ -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;