From: Sasha Levin Date: Fri, 17 Jun 2011 11:13:16 +0000 (-0400) Subject: kvm tools: Fix attempt to free mmaped memory X-Git-Tag: next-20110824~3^2~202 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=788a81e106afeefdcc5e122e4b1f7bbed676351b;p=karo-tx-linux.git kvm tools: Fix attempt to free mmaped memory Framebuffer memory which was mmap() is being free() at the shutdown of the guest, leading to glibc errors. Signed-off-by: Sasha Levin Signed-off-by: Pekka Enberg --- diff --git a/tools/kvm/framebuffer.c b/tools/kvm/framebuffer.c index 1e354962e056..b6eb1acee962 100644 --- a/tools/kvm/framebuffer.c +++ b/tools/kvm/framebuffer.c @@ -3,6 +3,7 @@ #include #include #include +#include static LIST_HEAD(framebuffers); @@ -62,6 +63,6 @@ void fb__stop(void) struct framebuffer *fb; list_for_each_entry(fb, &framebuffers, node) { - free(fb->mem); + munmap(fb->mem, fb->mem_size); } } diff --git a/tools/kvm/hw/vesa.c b/tools/kvm/hw/vesa.c index 71322fc2da5b..032e63030c7f 100644 --- a/tools/kvm/hw/vesa.c +++ b/tools/kvm/hw/vesa.c @@ -70,6 +70,7 @@ struct framebuffer *vesa__init(struct kvm *kvm) .depth = VESA_BPP, .mem = mem, .mem_addr = VESA_MEM_ADDR, + .mem_size = VESA_MEM_SIZE, }; return fb__register(&vesafb); } diff --git a/tools/kvm/include/kvm/framebuffer.h b/tools/kvm/include/kvm/framebuffer.h index d28dadb9f055..b66d0ba9982e 100644 --- a/tools/kvm/include/kvm/framebuffer.h +++ b/tools/kvm/include/kvm/framebuffer.h @@ -20,6 +20,7 @@ struct framebuffer { u8 depth; char *mem; u64 mem_addr; + u64 mem_size; unsigned long nr_targets; struct fb_target_operations *targets[FB_MAX_TARGETS];