Commit a75b49db authored by Johan Hovold's avatar Johan Hovold Committed by Dmitry Baryshkov
Browse files

drm/msm: fix workqueue leak on bind errors



Make sure to destroy the workqueue also in case of early errors during
bind (e.g. a subcomponent failing to bind).

Since commit c3b790ea ("drm: Manage drm_mode_config_init with
drmm_") the mode config will be freed when the drm device is released
also when using the legacy interface, but add an explicit cleanup for
consistency and to facilitate backporting.

Fixes: 060530f1 ("drm/msm: use componentised device support")
Cc: stable@vger.kernel.org      # 3.15
Cc: Rob Clark <robdclark@gmail.com>
Signed-off-by: default avatarJohan Hovold <johan+linaro@kernel.org>
Reviewed-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/525093/
Link: https://lore.kernel.org/r/20230306100722.28485-9-johan+linaro@kernel.org


Signed-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
parent ca090c83
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -459,7 +459,7 @@ static int msm_drm_init(struct device *dev, const struct drm_driver *drv)

	ret = msm_init_vram(ddev);
	if (ret)
		goto err_put_dev;
		goto err_cleanup_mode_config;

	/* Bind all our sub-components: */
	ret = component_bind_all(dev, ddev);
@@ -564,6 +564,9 @@ static int msm_drm_init(struct device *dev, const struct drm_driver *drv)

err_deinit_vram:
	msm_deinit_vram(ddev);
err_cleanup_mode_config:
	drm_mode_config_cleanup(ddev);
	destroy_workqueue(priv->wq);
err_put_dev:
	drm_dev_put(ddev);