diff options
Diffstat (limited to 'net/bluetooth')
-rw-r--r-- | net/bluetooth/rfcomm/core.c | 2 | ||||
-rw-r--r-- | net/bluetooth/rfcomm/tty.c | 5 |
2 files changed, 1 insertions, 6 deletions
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c index 0c2c93735e93..eb62558e9b09 100644 --- a/net/bluetooth/rfcomm/core.c +++ b/net/bluetooth/rfcomm/core.c | |||
@@ -423,8 +423,8 @@ static int __rfcomm_dlc_close(struct rfcomm_dlc *d, int err) | |||
423 | 423 | ||
424 | rfcomm_dlc_lock(d); | 424 | rfcomm_dlc_lock(d); |
425 | d->state = BT_CLOSED; | 425 | d->state = BT_CLOSED; |
426 | d->state_change(d, err); | ||
427 | rfcomm_dlc_unlock(d); | 426 | rfcomm_dlc_unlock(d); |
427 | d->state_change(d, err); | ||
428 | 428 | ||
429 | skb_queue_purge(&d->tx_queue); | 429 | skb_queue_purge(&d->tx_queue); |
430 | rfcomm_dlc_unlink(d); | 430 | rfcomm_dlc_unlink(d); |
diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c index e4c779bb8d76..c3f749abb2d0 100644 --- a/net/bluetooth/rfcomm/tty.c +++ b/net/bluetooth/rfcomm/tty.c | |||
@@ -570,12 +570,7 @@ static void rfcomm_dev_state_change(struct rfcomm_dlc *dlc, int err) | |||
570 | return; | 570 | return; |
571 | 571 | ||
572 | rfcomm_dev_del(dev); | 572 | rfcomm_dev_del(dev); |
573 | /* We have to drop DLC lock here, otherwise | ||
574 | rfcomm_dev_put() will dead lock if it's | ||
575 | the last reference. */ | ||
576 | rfcomm_dlc_unlock(dlc); | ||
577 | rfcomm_dev_put(dev); | 573 | rfcomm_dev_put(dev); |
578 | rfcomm_dlc_lock(dlc); | ||
579 | } | 574 | } |
580 | } else | 575 | } else |
581 | tty_hangup(dev->tty); | 576 | tty_hangup(dev->tty); |