| From c22f2ff8724b49dce2ae797e9fbf4bc0fa91112f Mon Sep 17 00:00:00 2001 |
| From: Johan Hovold <johan+linaro@kernel.org> |
| Date: Mon, 6 Mar 2023 11:32:42 +0100 |
| Subject: drm/sun4i: fix missing component unbind on bind errors |
| |
| From: Johan Hovold <johan+linaro@kernel.org> |
| |
| commit c22f2ff8724b49dce2ae797e9fbf4bc0fa91112f upstream. |
| |
| Make sure to unbind all subcomponents when binding the aggregate device |
| fails. |
| |
| Fixes: 9026e0d122ac ("drm: Add Allwinner A10 Display Engine support") |
| Cc: stable@vger.kernel.org # 4.7 |
| Cc: Maxime Ripard <mripard@kernel.org> |
| Signed-off-by: Johan Hovold <johan+linaro@kernel.org> |
| Signed-off-by: Maxime Ripard <maxime@cerno.tech> |
| Link: https://patchwork.freedesktop.org/patch/msgid/20230306103242.4775-1-johan+linaro@kernel.org |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/gpu/drm/sun4i/sun4i_drv.c | 6 ++++-- |
| 1 file changed, 4 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/gpu/drm/sun4i/sun4i_drv.c |
| +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c |
| @@ -95,12 +95,12 @@ static int sun4i_drv_bind(struct device |
| /* drm_vblank_init calls kcalloc, which can fail */ |
| ret = drm_vblank_init(drm, drm->mode_config.num_crtc); |
| if (ret) |
| - goto cleanup_mode_config; |
| + goto unbind_all; |
| |
| /* Remove early framebuffers (ie. simplefb) */ |
| ret = drm_aperture_remove_framebuffers(false, &sun4i_drv_driver); |
| if (ret) |
| - goto cleanup_mode_config; |
| + goto unbind_all; |
| |
| sun4i_framebuffer_init(drm); |
| |
| @@ -119,6 +119,8 @@ static int sun4i_drv_bind(struct device |
| |
| finish_poll: |
| drm_kms_helper_poll_fini(drm); |
| +unbind_all: |
| + component_unbind_all(dev, NULL); |
| cleanup_mode_config: |
| drm_mode_config_cleanup(drm); |
| of_reserved_mem_device_release(dev); |