drm_sysfs_connector_add() misses to call device_unregister() when sysfs_create_link() fails to create. Add the missed function call to fix it.
Fixes: e1a29c6c5955 ("drm: Add ddc link in sysfs created by drm_connector") Signed-off-by: Jing Xiangfeng jingxiangfeng@huawei.com --- drivers/gpu/drm/drm_sysfs.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c index f0336c804639..39e173e10cf7 100644 --- a/drivers/gpu/drm/drm_sysfs.c +++ b/drivers/gpu/drm/drm_sysfs.c @@ -274,6 +274,7 @@ static const struct attribute_group *connector_dev_groups[] = { int drm_sysfs_connector_add(struct drm_connector *connector) { struct drm_device *dev = connector->dev; + int ret = 0;
if (connector->kdev) return 0; @@ -291,10 +292,16 @@ int drm_sysfs_connector_add(struct drm_connector *connector) return PTR_ERR(connector->kdev); }
- if (connector->ddc) - return sysfs_create_link(&connector->kdev->kobj, + if (connector->ddc) { + ret = sysfs_create_link(&connector->kdev->kobj, &connector->ddc->dev.kobj, "ddc"); - return 0; + if (ret) { + device_unregister(connector->kdev); + connector->kdev = NULL; + } + } + + return ret; }
void drm_sysfs_connector_remove(struct drm_connector *connector)