The exynos_dp_bind() returns without unwinding analogix_dp_bind() when drm_bridge_connector_init() fails. The aux device registered by analogix_dp_bind() is then left behind with a dangling drm_dev pointer, which could be accessed on later AUX transfers.
Call analogix_dp_unbind() in the error path to release the aux device. Signed-off-by: Damon Ding <[email protected]> --- drivers/gpu/drm/exynos/exynos_dp.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/gpu/drm/exynos/exynos_dp.c b/drivers/gpu/drm/exynos/exynos_dp.c index b1e130278ecc..032c50d56179 100644 --- a/drivers/gpu/drm/exynos/exynos_dp.c +++ b/drivers/gpu/drm/exynos/exynos_dp.c @@ -121,6 +121,7 @@ static int exynos_dp_bind(struct device *dev, struct device *master, void *data) if (IS_ERR(connector)) { ret = PTR_ERR(connector); dev_err(dp->dev, "Failed to initialize bridge_connector\n"); + analogix_dp_unbind(dp->adp); return ret; } -- 2.34.1
