diff mbox series

drm/arm/komeda: Add a condition check before removing sysfs attribute

Message ID 20250220085358.232883-1-oushixiong1025@163.com (mailing list archive)
State New
Headers show
Series drm/arm/komeda: Add a condition check before removing sysfs attribute | expand

Commit Message

Shixiong Ou Feb. 20, 2025, 8:53 a.m. UTC
From: Shixiong Ou <oushixiong@kylinos.cn>

[WHY] If the call to sysfs_create_group() fails, there is
      no need to call function sysfs_remove_group().

[HOW] Add a condition check before removing sysfs attribute.

Signed-off-by: Shixiong Ou <oushixiong@kylinos.cn>
---
 drivers/gpu/drm/arm/display/komeda/komeda_dev.c | 7 ++++++-
 drivers/gpu/drm/arm/display/komeda/komeda_dev.h | 2 ++
 2 files changed, 8 insertions(+), 1 deletion(-)

Comments

Maxime Ripard Feb. 20, 2025, 9:12 a.m. UTC | #1
On Thu, Feb 20, 2025 at 04:53:58PM +0800, oushixiong1025@163.com wrote:
> From: Shixiong Ou <oushixiong@kylinos.cn>
> 
> [WHY] If the call to sysfs_create_group() fails, there is
>       no need to call function sysfs_remove_group().
> 
> [HOW] Add a condition check before removing sysfs attribute.
> 
> Signed-off-by: Shixiong Ou <oushixiong@kylinos.cn>

What are you trying to fix exactly? AFAIK, there's no code path that
calls komeda_dev_destroy() after komeda_dev_create() has failed.

Maxime
Shixiong Ou Feb. 20, 2025, 9:20 a.m. UTC | #2
在 2025/2/20 17:12, Maxime Ripard 写道:
> On Thu, Feb 20, 2025 at 04:53:58PM +0800,oushixiong1025@163.com  wrote:
>> From: Shixiong Ou<oushixiong@kylinos.cn>
>>
>> [WHY] If the call to sysfs_create_group() fails, there is
>>        no need to call function sysfs_remove_group().
>>
>> [HOW] Add a condition check before removing sysfs attribute.
>>
>> Signed-off-by: Shixiong Ou<oushixiong@kylinos.cn>
> What are you trying to fix exactly? AFAIK, there's no code path that
> calls komeda_dev_destroy() after komeda_dev_create() has failed.
>
> Maxime

|if calling |||sysfs_create_group() fails, it will go to lable 'err_cleanup:', and it 
will call |komeda_dev_destroy() laterly. thanks, Shixiong Ou. |
Maxime Ripard Feb. 20, 2025, 9:43 a.m. UTC | #3
On Thu, Feb 20, 2025 at 05:20:48PM +0800, Shixiong Ou wrote:
> 
> 在 2025/2/20 17:12, Maxime Ripard 写道:
> > On Thu, Feb 20, 2025 at 04:53:58PM +0800,oushixiong1025@163.com  wrote:
> > > From: Shixiong Ou<oushixiong@kylinos.cn>
> > > 
> > > [WHY] If the call to sysfs_create_group() fails, there is
> > >        no need to call function sysfs_remove_group().
> > > 
> > > [HOW] Add a condition check before removing sysfs attribute.
> > > 
> > > Signed-off-by: Shixiong Ou<oushixiong@kylinos.cn>
> > What are you trying to fix exactly? AFAIK, there's no code path that
> > calls komeda_dev_destroy() after komeda_dev_create() has failed.
>
> |if calling |||sysfs_create_group() fails, it will go to lable
> 'err_cleanup:', and it will call |komeda_dev_destroy() laterly.

Ah, right. Then that's what you should fix.

Maxime
diff mbox series

Patch

diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_dev.c b/drivers/gpu/drm/arm/display/komeda/komeda_dev.c
index 5ba62e637a61..7d646f978640 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_dev.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_dev.c
@@ -259,6 +259,8 @@  struct komeda_dev *komeda_dev_create(struct device *dev)
 		goto err_cleanup;
 	}
 
+	mdev->sysfs_attr_enabled = true;
+
 	mdev->err_verbosity = KOMEDA_DEV_PRINT_ERR_EVENTS;
 
 	komeda_debugfs_init(mdev);
@@ -278,7 +280,10 @@  void komeda_dev_destroy(struct komeda_dev *mdev)
 	const struct komeda_dev_funcs *funcs = mdev->funcs;
 	int i;
 
-	sysfs_remove_group(&dev->kobj, &komeda_sysfs_attr_group);
+	if (mdev->sysfs_attr_enabled) {
+		sysfs_remove_group(&dev->kobj, &komeda_sysfs_attr_group);
+		mdev->sysfs_attr_enabled = false;
+	}
 
 	debugfs_remove_recursive(mdev->debugfs_root);
 
diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_dev.h b/drivers/gpu/drm/arm/display/komeda/komeda_dev.h
index 5b536f0cb548..af087540325c 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_dev.h
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_dev.h
@@ -216,6 +216,8 @@  struct komeda_dev {
 #define KOMEDA_DEV_PRINT_DUMP_STATE_ON_EVENT BIT(8)
 	/* Disable rate limiting of event prints (normally one per commit) */
 #define KOMEDA_DEV_PRINT_DISABLE_RATELIMIT BIT(12)
+
+	bool sysfs_attr_enabled;
 };
 
 static inline bool