All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Wu <michael@allwinnertech.com>
To: myungjoo.ham@samsung.com, cw00.choi@samsung.com,
	andriy.shevchenko@linux.intel.com
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH v3] extcon: Fixed sysfs duplicate filename issue
Date: Fri, 24 Oct 2025 10:49:46 +0800	[thread overview]
Message-ID: <20251024024946.16618-1-michael@allwinnertech.com> (raw)

With current extcon_dev_unregister() timing, ida_free is before
device_unregister(), that may cause current id re-alloc to another
device in extcon_dev_register() context but sysfs filename path not
removal completed yet.

The right timing shows below:
on extcon_dev_register: ida_alloc() -> device_register()
on extcon_dev_unregister: device_unregister() -> ida_free()

stack information when an error occurs:
sysfs: cannot create duplicate filename '/class/extcon/extcon1'
Call trace:
 sysfs_warn_dup+0x68/0x88
 sysfs_do_create_link_sd+0x94/0xdc
 sysfs_create_link+0x30/0x48
 device_add_class_symlinks+0xb4/0x12c
 device_add+0x1e0/0x48c
 device_register+0x20/0x34
 extcon_dev_register+0x3b8/0x5c4

Fixes: 7bba9e81a6fb ("extcon: Use unique number for the extcon device ID")
Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Michael Wu <michael@allwinnertech.com>
---
ChangeLog:
V2 -> V3: Dropped some noisy lines in commit messages, suggested by Andy Shevchenko
V1 -> V2: Update commit msg, suggested by Markus Elfring
V1: https://lore.kernel.org/all/20251011053719.87055-1-michael@allwinnertech.com/
---
---
 drivers/extcon/extcon.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/extcon/extcon.c b/drivers/extcon/extcon.c
index e7f55c021e562..c08f642d7f5ee 100644
--- a/drivers/extcon/extcon.c
+++ b/drivers/extcon/extcon.c
@@ -1371,10 +1371,10 @@ void extcon_dev_unregister(struct extcon_dev *edev)
 		return;
 	}
 
-	ida_free(&extcon_dev_ids, edev->id);
-
 	device_unregister(&edev->dev);
 
+	ida_free(&extcon_dev_ids, edev->id);
+
 	if (edev->mutually_exclusive && edev->max_supported) {
 		for (index = 0; edev->mutually_exclusive[index];
 				index++)
-- 
2.29.0


             reply	other threads:[~2025-10-24  2:50 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-24  2:49 Michael Wu [this message]
2025-11-23 15:38 ` [PATCH v3] extcon: Fixed sysfs duplicate filename issue Chanwoo Choi
2025-12-21 14:01 ` Diederik de Haas
2025-12-21 14:01   ` Diederik de Haas
2025-12-27 15:08   ` Andy Shevchenko
2025-12-27 15:08     ` Andy Shevchenko
2025-12-28 11:01     ` Diederik de Haas
2025-12-28 11:01       ` Diederik de Haas
2025-12-28 17:26       ` Andy Shevchenko
2025-12-28 17:26         ` Andy Shevchenko
2025-12-29 23:31         ` Diederik de Haas
2025-12-29 23:31           ` Diederik de Haas
2025-12-30 11:26           ` Andy Shevchenko
2025-12-30 11:26             ` Andy Shevchenko
2025-12-30 14:24             ` Diederik de Haas
2025-12-30 14:24               ` Diederik de Haas
2026-01-02 11:38               ` Andy Shevchenko
2026-01-02 11:38                 ` Andy Shevchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251024024946.16618-1-michael@allwinnertech.com \
    --to=michael@allwinnertech.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=cw00.choi@samsung.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=myungjoo.ham@samsung.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.