mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-21 06:50:25 +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:
|
getmem_done:
|
||||||
remove_conflicting_framebuffers(info->apertures,
|
remove_conflicting_framebuffers(info->apertures,
|
||||||
KBUILD_MODNAME, false);
|
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);
|
pci_dev_put(pdev);
|
||||||
|
}
|
||||||
kfree(info->apertures);
|
kfree(info->apertures);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Add table
Reference in a new issue