[PATCH] Bluetooth: btnxpuart: unregister HCI device on probe failure
From: Myeonghun Pak
Date: Fri Jun 26 2026 - 04:57:28 EST
If hci_register_dev() succeeds but ps_setup() fails, nxp_serdev_probe()
jumps to probe_fail and frees the HCI device without first unregistering
it. The remove path unregisters the HCI device before freeing it, and the
probe error path needs the same ordering once registration has succeeded.
Send failures after successful registration through a new label that calls
hci_unregister_dev(), then fall through to the existing reset and free
cleanup. Keep hci_register_dev() failures on the original path because the
device was not registered in that case.
Fixes: 689ca16e5232 ("Bluetooth: NXP: Add protocol support for NXP Bluetooth chipsets")
Co-developed-by: Ijae Kim <ae878000@xxxxxxxxx>
Signed-off-by: Ijae Kim <ae878000@xxxxxxxxx>
Signed-off-by: Myeonghun Pak <mhun512@xxxxxxxxx>
---
drivers/bluetooth/btnxpuart.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/bluetooth/btnxpuart.c b/drivers/bluetooth/btnxpuart.c
index e7036a48ce..6778b883ab 100644
--- a/drivers/bluetooth/btnxpuart.c
+++ b/drivers/bluetooth/btnxpuart.c
@@ -1907,13 +1907,15 @@ static int nxp_serdev_probe(struct serdev_device *serdev)
}
if (ps_setup(hdev))
- goto probe_fail;
+ goto unregister_dev;
hci_devcd_register(hdev, nxp_coredump, nxp_coredump_hdr,
nxp_coredump_notify);
return 0;
+unregister_dev:
+ hci_unregister_dev(hdev);
probe_fail:
reset_control_assert(nxpdev->pdn);
hci_free_dev(hdev);
--
2.53.0