From: Daniel Schultz Date: Fri, 23 Sep 2016 10:52:49 +0000 (+0200) Subject: drm/tilcdc: fix wrong error handling X-Git-Tag: v4.9-rc1~41^2~18^2 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=7b993855dfd5d87e07ac84285d3d9bb0c743dede;p=linux.git drm/tilcdc: fix wrong error handling When 'component_bind_all' fails it should not try to unbind components in the error handling. This will produce a null pointer kernel panic when no component exist. This patch changes the order of the error handling. Now, it will only unbind components if the are bound. Otherwise, the module will jump to an error label below. Signed-off-by: Daniel Schultz Reviewed-by: Sean Paul Signed-off-by: Jyri Sarha --- diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c index 4b93cab91168..a694977c32f4 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c @@ -412,13 +412,13 @@ static int tilcdc_load(struct drm_device *dev, unsigned long flags) fail_vblank_cleanup: drm_vblank_cleanup(dev); -fail_mode_config_cleanup: - drm_mode_config_cleanup(dev); - fail_component_cleanup: if (priv->is_componentized) component_unbind_all(dev->dev, dev); +fail_mode_config_cleanup: + drm_mode_config_cleanup(dev); + fail_external_cleanup: tilcdc_remove_external_encoders(dev);