In function hvfb_probe in hyperv_fb.c, it calls hvfb_getmem(hdev, info) and return err when info->apertures is freed. In the error1 label of hvfb_probe, info->apertures will be freed twice by framebuffer_release(info). My patch sets info->apertures to NULL after it was freed to avoid double free. Signed-off-by: Lv Yunlong <lyl2019@xxxxxxxxxxxxxxxx> --- drivers/video/fbdev/hyperv_fb.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/video/fbdev/hyperv_fb.c b/drivers/video/fbdev/hyperv_fb.c index c8b0ae676809..2fc9b507e73a 100644 --- a/drivers/video/fbdev/hyperv_fb.c +++ b/drivers/video/fbdev/hyperv_fb.c @@ -1032,6 +1032,7 @@ static int hvfb_getmem(struct hv_device *hdev, struct fb_info *info) if (!pdev) { pr_err("Unable to find PCI Hyper-V video\n"); kfree(info->apertures); + info->apertures = NULL; return -ENODEV; } @@ -1130,6 +1131,7 @@ static int hvfb_getmem(struct hv_device *hdev, struct fb_info *info) pci_dev_put(pdev); } kfree(info->apertures); + info->apertures = NULL; return 0; @@ -1142,6 +1144,7 @@ static int hvfb_getmem(struct hv_device *hdev, struct fb_info *info) if (!gen2vm) pci_dev_put(pdev); kfree(info->apertures); + info->apertures = NULL; return -ENOMEM; } -- 2.25.1