drm/rockchip: don't leak iommu mapping
arm_iommu_attach_device() takes its own reference to the mapping we give it. Since we do not keep a reference to the mapping ourselves, we must release it before returning. Also fix the error path, which fails to release the mapping if it has called arm_iommu_detach_device() since that clears archdata.mapping. Signed-off-by: John Keeping <john@metanate.com>
This commit is contained in:
parent
aa1ac27f48
commit
69b007968e
@ -218,6 +218,7 @@ static int rockchip_drm_load(struct drm_device *drm_dev, unsigned long flags)
|
||||
if (ret)
|
||||
goto err_vblank_cleanup;
|
||||
|
||||
arm_iommu_release_mapping(mapping);
|
||||
return 0;
|
||||
err_vblank_cleanup:
|
||||
drm_vblank_cleanup(drm_dev);
|
||||
@ -228,7 +229,7 @@ err_unbind:
|
||||
err_detach_device:
|
||||
arm_iommu_detach_device(dev);
|
||||
err_release_mapping:
|
||||
arm_iommu_release_mapping(dev->archdata.mapping);
|
||||
arm_iommu_release_mapping(mapping);
|
||||
err_config_cleanup:
|
||||
drm_mode_config_cleanup(drm_dev);
|
||||
drm_dev->dev_private = NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user