diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/bluetooth/rfcomm/tty.c | 13 | ||||
-rw-r--r-- | net/irda/ircomm/ircomm_tty.c | 14 |
2 files changed, 9 insertions, 18 deletions
diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c index 5d163571d3f7..d3340dd52bcf 100644 --- a/net/bluetooth/rfcomm/tty.c +++ b/net/bluetooth/rfcomm/tty.c | |||
@@ -643,14 +643,7 @@ static void rfcomm_tty_wakeup(unsigned long arg) | |||
643 | return; | 643 | return; |
644 | 644 | ||
645 | BT_DBG("dev %p tty %p", dev, tty); | 645 | BT_DBG("dev %p tty %p", dev, tty); |
646 | 646 | tty_wakeup(tty); | |
647 | if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) && tty->ldisc.write_wakeup) | ||
648 | (tty->ldisc.write_wakeup)(tty); | ||
649 | |||
650 | wake_up_interruptible(&tty->write_wait); | ||
651 | #ifdef SERIAL_HAVE_POLL_WAIT | ||
652 | wake_up_interruptible(&tty->poll_wait); | ||
653 | #endif | ||
654 | } | 647 | } |
655 | 648 | ||
656 | static void rfcomm_tty_copy_pending(struct rfcomm_dev *dev) | 649 | static void rfcomm_tty_copy_pending(struct rfcomm_dev *dev) |
@@ -1059,9 +1052,7 @@ static void rfcomm_tty_flush_buffer(struct tty_struct *tty) | |||
1059 | return; | 1052 | return; |
1060 | 1053 | ||
1061 | skb_queue_purge(&dev->dlc->tx_queue); | 1054 | skb_queue_purge(&dev->dlc->tx_queue); |
1062 | 1055 | tty_wakeup(tty); | |
1063 | if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) && tty->ldisc.write_wakeup) | ||
1064 | tty->ldisc.write_wakeup(tty); | ||
1065 | } | 1056 | } |
1066 | 1057 | ||
1067 | static void rfcomm_tty_send_xchar(struct tty_struct *tty, char ch) | 1058 | static void rfcomm_tty_send_xchar(struct tty_struct *tty, char ch) |
diff --git a/net/irda/ircomm/ircomm_tty.c b/net/irda/ircomm/ircomm_tty.c index 76c3057d0179..e4e2caeb9d82 100644 --- a/net/irda/ircomm/ircomm_tty.c +++ b/net/irda/ircomm/ircomm_tty.c | |||
@@ -650,12 +650,7 @@ static void ircomm_tty_do_softint(struct work_struct *work) | |||
650 | } | 650 | } |
651 | 651 | ||
652 | /* Check if user (still) wants to be waken up */ | 652 | /* Check if user (still) wants to be waken up */ |
653 | if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && | 653 | tty_wakeup(tty); |
654 | tty->ldisc.write_wakeup) | ||
655 | { | ||
656 | (tty->ldisc.write_wakeup)(tty); | ||
657 | } | ||
658 | wake_up_interruptible(&tty->write_wait); | ||
659 | } | 654 | } |
660 | 655 | ||
661 | /* | 656 | /* |
@@ -1141,6 +1136,7 @@ static int ircomm_tty_data_indication(void *instance, void *sap, | |||
1141 | struct sk_buff *skb) | 1136 | struct sk_buff *skb) |
1142 | { | 1137 | { |
1143 | struct ircomm_tty_cb *self = (struct ircomm_tty_cb *) instance; | 1138 | struct ircomm_tty_cb *self = (struct ircomm_tty_cb *) instance; |
1139 | struct tty_ldisc *ld; | ||
1144 | 1140 | ||
1145 | IRDA_DEBUG(2, "%s()\n", __func__ ); | 1141 | IRDA_DEBUG(2, "%s()\n", __func__ ); |
1146 | 1142 | ||
@@ -1173,7 +1169,11 @@ static int ircomm_tty_data_indication(void *instance, void *sap, | |||
1173 | * involve the flip buffers, since we are not running in an interrupt | 1169 | * involve the flip buffers, since we are not running in an interrupt |
1174 | * handler | 1170 | * handler |
1175 | */ | 1171 | */ |
1176 | self->tty->ldisc.receive_buf(self->tty, skb->data, NULL, skb->len); | 1172 | |
1173 | ld = tty_ldisc_ref(self->tty); | ||
1174 | if (ld) | ||
1175 | ld->ops->receive_buf(self->tty, skb->data, NULL, skb->len); | ||
1176 | tty_ldisc_deref(ld); | ||
1177 | 1177 | ||
1178 | /* No need to kfree_skb - see ircomm_ttp_data_indication() */ | 1178 | /* No need to kfree_skb - see ircomm_ttp_data_indication() */ |
1179 | 1179 | ||