mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 08:33:17 +02:00
drm/vmwgfx: Release ttm memory if probe fails
The ttm mem global state was leaking if the vmwgfx driver load failed. In case of a driver load failure we have to make sure we also release the ttm mem global state. Signed-off-by: Zack Rusin <zackr@vmware.com> Reviewed-by: Martin Krastev <krastevm@vmware.com> Link: https://patchwork.freedesktop.org/patch/msgid/20211105193845.258816-3-zackr@vmware.com
This commit is contained in:
parent
826c387d01
commit
28b5f3b612
|
|
@ -1616,34 +1616,40 @@ static int vmw_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
|
||||
ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, &driver);
|
||||
if (ret)
|
||||
return ret;
|
||||
goto out_error;
|
||||
|
||||
ret = pcim_enable_device(pdev);
|
||||
if (ret)
|
||||
return ret;
|
||||
goto out_error;
|
||||
|
||||
vmw = devm_drm_dev_alloc(&pdev->dev, &driver,
|
||||
struct vmw_private, drm);
|
||||
if (IS_ERR(vmw))
|
||||
return PTR_ERR(vmw);
|
||||
if (IS_ERR(vmw)) {
|
||||
ret = PTR_ERR(vmw);
|
||||
goto out_error;
|
||||
}
|
||||
|
||||
pci_set_drvdata(pdev, &vmw->drm);
|
||||
|
||||
ret = ttm_mem_global_init(&ttm_mem_glob, &pdev->dev);
|
||||
if (ret)
|
||||
return ret;
|
||||
goto out_error;
|
||||
|
||||
ret = vmw_driver_load(vmw, ent->device);
|
||||
if (ret)
|
||||
return ret;
|
||||
goto out_release;
|
||||
|
||||
ret = drm_dev_register(&vmw->drm, 0);
|
||||
if (ret) {
|
||||
vmw_driver_unload(&vmw->drm);
|
||||
return ret;
|
||||
}
|
||||
if (ret)
|
||||
goto out_unload;
|
||||
|
||||
return 0;
|
||||
out_unload:
|
||||
vmw_driver_unload(&vmw->drm);
|
||||
out_release:
|
||||
ttm_mem_global_release(&ttm_mem_glob);
|
||||
out_error:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int __init vmwgfx_init(void)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user