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 c9191871c1e0..0a387f2eb7a9 100644 --- a/net/bluetooth/rfcomm/tty.c +++ b/net/bluetooth/rfcomm/tty.c | |||
@@ -617,14 +617,7 @@ static void rfcomm_tty_wakeup(unsigned long arg) | |||
617 | return; | 617 | return; |
618 | 618 | ||
619 | BT_DBG("dev %p tty %p", dev, tty); | 619 | BT_DBG("dev %p tty %p", dev, tty); |
620 | 620 | tty_wakeup(tty); | |
621 | if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) && tty->ldisc.write_wakeup) | ||
622 | (tty->ldisc.write_wakeup)(tty); | ||
623 | |||
624 | wake_up_interruptible(&tty->write_wait); | ||
625 | #ifdef SERIAL_HAVE_POLL_WAIT | ||
626 | wake_up_interruptible(&tty->poll_wait); | ||
627 | #endif | ||
628 | } | 621 | } |
629 | 622 | ||
630 | static int rfcomm_tty_open(struct tty_struct *tty, struct file *filp) | 623 | static int rfcomm_tty_open(struct tty_struct *tty, struct file *filp) |
@@ -1005,9 +998,7 @@ static void rfcomm_tty_flush_buffer(struct tty_struct *tty) | |||
1005 | return; | 998 | return; |
1006 | 999 | ||
1007 | skb_queue_purge(&dev->dlc->tx_queue); | 1000 | skb_queue_purge(&dev->dlc->tx_queue); |
1008 | 1001 | tty_wakeup(tty); | |
1009 | if (test_bit(TTY_DO_WRITE_WAKEUP, &tty->flags) && tty->ldisc.write_wakeup) | ||
1010 | tty->ldisc.write_wakeup(tty); | ||
1011 | } | 1002 | } |
1012 | 1003 | ||
1013 | static void rfcomm_tty_send_xchar(struct tty_struct *tty, char ch) | 1004 | 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 | ||