summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/hyperv
diff options
context:
space:
mode:
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>2022-07-31 22:01:55 +0200
committerWei Liu <wei.liu@kernel.org>2022-08-15 15:55:17 +0000
commitf1f63cbb705dc38826369496c6fc12c1b8db1324 (patch)
treef2a70639eaf4f2a0fd4c1d2fac8a74c9e2957f30 /drivers/gpu/drm/hyperv
parent568035b01cfb107af8d2e4bd2fb9aea22cf5b868 (diff)
downloadlinux-rpi-f1f63cbb705dc38826369496c6fc12c1b8db1324.tar.gz
linux-rpi-f1f63cbb705dc38826369496c6fc12c1b8db1324.tar.bz2
linux-rpi-f1f63cbb705dc38826369496c6fc12c1b8db1324.zip
drm/hyperv: Fix an error handling path in hyperv_vmbus_probe()
hyperv_setup_vram() calls vmbus_allocate_mmio(). This must be undone in the error handling path of the probe, as already done in the remove function. Fixes: a0ab5abced55 ("drm/hyperv : Removing the restruction of VRAM allocation with PCI bar size") Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Reviewed-by: Michael Kelley <mikelley@microsoft.com> Link: https://lore.kernel.org/r/7dfa372af3e35fbb1d6f157183dfef2e4512d3be.1659297696.git.christophe.jaillet@wanadoo.fr Signed-off-by: Wei Liu <wei.liu@kernel.org>
Diffstat (limited to 'drivers/gpu/drm/hyperv')
-rw-r--r--drivers/gpu/drm/hyperv/hyperv_drm_drv.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/gpu/drm/hyperv/hyperv_drm_drv.c b/drivers/gpu/drm/hyperv/hyperv_drm_drv.c
index 6d11e7938c83..fc8b4e045f5d 100644
--- a/drivers/gpu/drm/hyperv/hyperv_drm_drv.c
+++ b/drivers/gpu/drm/hyperv/hyperv_drm_drv.c
@@ -133,7 +133,6 @@ static int hyperv_vmbus_probe(struct hv_device *hdev,
}
ret = hyperv_setup_vram(hv, hdev);
-
if (ret)
goto err_vmbus_close;
@@ -150,18 +149,20 @@ static int hyperv_vmbus_probe(struct hv_device *hdev,
ret = hyperv_mode_config_init(hv);
if (ret)
- goto err_vmbus_close;
+ goto err_free_mmio;
ret = drm_dev_register(dev, 0);
if (ret) {
drm_err(dev, "Failed to register drm driver.\n");
- goto err_vmbus_close;
+ goto err_free_mmio;
}
drm_fbdev_generic_setup(dev, 0);
return 0;
+err_free_mmio:
+ vmbus_free_mmio(hv->mem->start, hv->fb_size);
err_vmbus_close:
vmbus_close(hdev->channel);
err_hv_set_drv_data: