Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp302666pxu; Fri, 23 Oct 2020 00:43:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx7jpJZzMz1lyRGsO552yLKK4+cIqWrndRHF/nl8P5rVr8lB0dCsl8enm30Z+50kNz6/Kpq X-Received: by 2002:a50:c01e:: with SMTP id r30mr939509edb.176.1603438985275; Fri, 23 Oct 2020 00:43:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603438985; cv=none; d=google.com; s=arc-20160816; b=P3YwmhyN+B+s1yWQrPuNyHwX8NAY6mooTc6/WoHqNVDr7RTx6eFtSseB6ZLXw5VQKt KkrAI3lZqwnx5uXWLlnU8wSvAbLM0nYsrrHl2/BrPH1yPuA/YDy24jkrPzDU7cDgaGi1 nXLueN7YtCCzsoN42fNNhu0Tqnq4Yagh+psp2vDdXa+/h7/QYwfN5nwI6AzfGRQPJ8Gq AMKc6yCEv+xueAs9pM/qOdd+8jFlvDN363REOBfx8d2cHcMrAOiMR+mdUu6/pH+0EmLX DGFtybhTxf4kp/YNkApdLTT7uMCcs+zjq5x5DPr5Rf5r2LGvtIs5TzpJvaQ2670AMoWJ kpQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=Qs9C3Ek0N4PClit2gRUx9x5ljuE9e1+owD9Wh1Wn0j8=; b=j4zqF7T+dHrvdbMGzp4WUCCOIBxpFkY8UC64JY8H8lRPh47QLyZIM9dXG7mzQlWoO1 blZuMdpFQffFXqtPKViY4d8mLuzUbxoIBl3teqVO9250kQXas7i43x5ZH3sMxC5GS4Ig EBY64TJV3ZoQupOHjDqgODjdvdNRcIUr5XBlw6o0zWpPuN1QhPzQ1X0l1XnbH2Y/4OT0 XbSBntQzyAYS3u/gStjY0m2onvbZqUkCAAu2SNCPVBbqawDcSNxresYF6FNuwiEpGr97 ahhELzu8YrStW95zaE7gHHRdHAnQpUPIWSjR+V1NDvfJXNpztZk6gUCuTdn6srcj4FpN HF2w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 89si273552edh.453.2020.10.23.00.42.43; Fri, 23 Oct 2020 00:43:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S374514AbgJWCLF (ORCPT + 99 others); Thu, 22 Oct 2020 22:11:05 -0400 Received: from szxga07-in.huawei.com ([45.249.212.35]:57822 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S374437AbgJWCLE (ORCPT ); Thu, 22 Oct 2020 22:11:04 -0400 Received: from DGGEMS409-HUB.china.huawei.com (unknown [172.30.72.58]) by Forcepoint Email with ESMTP id 99216345CE1515F6B48B; Fri, 23 Oct 2020 10:11:01 +0800 (CST) Received: from localhost.localdomain.localdomain (10.175.113.25) by DGGEMS409-HUB.china.huawei.com (10.3.19.209) with Microsoft SMTP Server id 14.3.487.0; Fri, 23 Oct 2020 10:10:53 +0800 From: Jing Xiangfeng To: , , , , , , , , CC: , , Subject: [PATCH] drm: Add the missed device_unregister() in drm_sysfs_connector_add() Date: Fri, 23 Oct 2020 10:16:48 +0800 Message-ID: <20201023021648.39214-1-jingxiangfeng@huawei.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [10.175.113.25] X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- 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) -- 2.17.1