linux/drivers/extcon
Michael Wu 8857f2495a extcon: Fixed sysfs duplicate filename issue
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: 7bba9e81a6 ("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>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Link: https://lore.kernel.org/lkml/20251024024946.16618-1-michael@allwinnertech.com/
2026-03-20 11:20:43 +09:00
..
devres.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
extcon-adc-jack.c extcon: adc-jack: Cleanup wakeup source only if it was enabled 2025-09-08 14:42:35 +09:00
extcon-axp288.c extcon: axp288: Fix wakeup source leaks on device unbind 2025-08-26 19:51:36 +09:00
extcon-fsa9480.c extcon: fsa9480: Fix wakeup source leaks on device unbind 2025-08-26 19:51:36 +09:00
extcon-gpio.c extconn: Clean-up few drivers by using managed work init 2021-03-23 15:22:40 +01:00
extcon-intel-cht-wc.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
extcon-intel-int3496.c extcon: int3496: replace use of system_wq with system_percpu_wq 2026-03-20 11:20:43 +09:00
extcon-intel-mrfld.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
extcon-intel.h extcon: intel: Split out some definitions to a common header 2019-04-05 10:21:41 +09:00
extcon-lc824206xa.c extcon: lc824206xa: Fix build error of POWER_SUPPLY_PROP_USB_TYPE 2024-09-05 01:44:51 +09:00
extcon-max3355.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
extcon-max8997.c Char / Misc driver updates for 5.14-rc1 2021-07-05 13:42:16 -07:00
extcon-max14526.c extcon: max14526: avoid defined but not used warning 2025-09-08 15:12:54 +09:00
extcon-max14577.c extcon: extcon-max14577: Fix potential work-queue cancellation race 2021-06-17 13:21:44 +02:00
extcon-max77693.c extcon: max77693: add device-tree compatible string 2023-10-06 20:38:24 +09:00
extcon-max77843.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
extcon-palmas.c extcon: palmas: Remove unused of_gpio.h 2023-05-29 23:30:15 +09:00
extcon-ptn5150.c extcon: ptn5150: handle pending IRQ events during system resume 2026-03-20 11:20:42 +09:00
extcon-qcom-spmi-misc.c extcon: qcom-spmi-misc: Fix wakeup source leaks on device unbind 2025-08-26 19:51:36 +09:00
extcon-rt8973a.c extcon: Switch i2c drivers back to use .probe() 2023-06-01 23:42:28 +09:00
extcon-rt8973a.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
extcon-rtk-type-c.c Update extcon next for v6.14 2025-01-12 13:44:27 +01:00
extcon-sm5502.c extcon: Switch i2c drivers back to use .probe() 2023-06-01 23:42:28 +09:00
extcon-sm5502.h extcon: sm5502: Add support for SM5504 2021-06-21 18:28:01 +09:00
extcon-usb-gpio.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
extcon-usbc-cros-ec.c Convert 'alloc_flex' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
extcon-usbc-tusb320.c extcon: usbc-tusb320: Set interrupt polarity based on device-tree 2023-12-05 10:09:19 +09:00
extcon.c extcon: Fixed sysfs duplicate filename issue 2026-03-20 11:20:43 +09:00
extcon.h extcon: Use unique number for the extcon device ID 2023-05-29 23:41:29 +09:00
Kconfig extcon: max14526: depends on I2C to prevent build warning/errors 2025-09-08 15:13:06 +09:00
Makefile extcon: Add basic support for Maxim MAX14526 MUIC 2025-09-08 14:43:00 +09:00