Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

fbdev: hyperv_fb: iounmap() the correct memory when removing a device

When a Hyper-V framebuffer device is removed, or the driver is unbound
from a device, any allocated and/or mapped memory must be released. In
particular, MMIO address space that was mapped to the framebuffer must
be unmapped. Current code unmaps the wrong address, resulting in an
error like:

[ 4093.980597] iounmap: bad address 00000000c936c05c

followed by a stack dump.

Commit d21987d709e8 ("video: hyperv: hyperv_fb: Support deferred IO for
Hyper-V frame buffer driver") changed the kind of address stored in
info->screen_base, and the iounmap() call in hvfb_putmem() was not
updated accordingly.

Fix this by updating hvfb_putmem() to unmap the correct address.

Fixes: d21987d709e8 ("video: hyperv: hyperv_fb: Support deferred IO for Hyper-V frame buffer driver")
Signed-off-by: Michael Kelley <mhklinux@outlook.com>
Reviewed-by: Saurabh Sengar <ssengar@linux.microsoft.com>
Link: https://lore.kernel.org/r/20250209235252.2987-1-mhklinux@outlook.com
Signed-off-by: Wei Liu <wei.liu@kernel.org>
Message-ID: <20250209235252.2987-1-mhklinux@outlook.com>

authored by

Michael Kelley and committed by
Wei Liu
7241c886 59115e2e

+1 -1
+1 -1
drivers/video/fbdev/hyperv_fb.c
··· 1080 1080 1081 1081 if (par->need_docopy) { 1082 1082 vfree(par->dio_vp); 1083 - iounmap(info->screen_base); 1083 + iounmap(par->mmio_vp); 1084 1084 vmbus_free_mmio(par->mem->start, screen_fb_size); 1085 1085 } else { 1086 1086 hvfb_release_phymem(hdev, info->fix.smem_start,