From 788a81e106afeefdcc5e122e4b1f7bbed676351b Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Fri, 17 Jun 2011 07:13:16 -0400 Subject: [PATCH] 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 --- tools/kvm/framebuffer.c | 3 ++- tools/kvm/hw/vesa.c | 1 + tools/kvm/include/kvm/framebuffer.h | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) 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]; -- 2.39.5