mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-26 04:16:39 +00:00
hyperv_fb: Update screen_info after removing old framebuffer
On gen2 HyperV VM, hyperv_fb will remove the old framebuffer, and the new allocated framebuffer address could be at a differnt location, and it might be no longer a VGA framebuffer. Update screen_info so that after kexec the kernel won't try to reuse the old invalid/stale framebuffer address as VGA, corrupting memory. [ mingo: Tidied up the changelog. ] Signed-off-by: Kairui Song <kasong@redhat.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Cc: Dexuan Cui <decui@microsoft.com> Cc: Jake Oshins <jakeo@microsoft.com> Cc: Wei Hu <weh@microsoft.com> Cc: "K. Y. Srinivasan" <kys@microsoft.com> Cc: Haiyang Zhang <haiyangz@microsoft.com> Cc: Stephen Hemminger <sthemmin@microsoft.com> Link: https://lore.kernel.org/r/20201014092429.1415040-3-kasong@redhat.com
This commit is contained in:
parent
afc18069a2
commit
3cb73bc3fa
1 changed files with 8 additions and 1 deletions
|
@ -1114,8 +1114,15 @@ static int hvfb_getmem(struct hv_device *hdev, struct fb_info *info)
|
|||
getmem_done:
|
||||
remove_conflicting_framebuffers(info->apertures,
|
||||
KBUILD_MODNAME, false);
|
||||
if (!gen2vm)
|
||||
|
||||
if (gen2vm) {
|
||||
/* framebuffer is reallocated, clear screen_info to avoid misuse from kexec */
|
||||
screen_info.lfb_size = 0;
|
||||
screen_info.lfb_base = 0;
|
||||
screen_info.orig_video_isVGA = 0;
|
||||
} else {
|
||||
pci_dev_put(pdev);
|
||||
}
|
||||
kfree(info->apertures);
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in a new issue