|
@@ -84,10 +84,6 @@ static void rfcomm_dev_destruct(struct tty_port *port)
|
|
|
|
|
|
BT_DBG("dev %p dlc %p", dev, dlc);
|
|
BT_DBG("dev %p dlc %p", dev, dlc);
|
|
|
|
|
|
- spin_lock(&rfcomm_dev_lock);
|
|
|
|
- list_del(&dev->list);
|
|
|
|
- spin_unlock(&rfcomm_dev_lock);
|
|
|
|
-
|
|
|
|
rfcomm_dlc_lock(dlc);
|
|
rfcomm_dlc_lock(dlc);
|
|
/* Detach DLC if it's owned by this dev */
|
|
/* Detach DLC if it's owned by this dev */
|
|
if (dlc->owner == dev)
|
|
if (dlc->owner == dev)
|
|
@@ -98,6 +94,10 @@ static void rfcomm_dev_destruct(struct tty_port *port)
|
|
|
|
|
|
tty_unregister_device(rfcomm_tty_driver, dev->id);
|
|
tty_unregister_device(rfcomm_tty_driver, dev->id);
|
|
|
|
|
|
|
|
+ spin_lock(&rfcomm_dev_lock);
|
|
|
|
+ list_del(&dev->list);
|
|
|
|
+ spin_unlock(&rfcomm_dev_lock);
|
|
|
|
+
|
|
kfree(dev);
|
|
kfree(dev);
|
|
|
|
|
|
/* It's safe to call module_put() here because socket still
|
|
/* It's safe to call module_put() here because socket still
|