diff options
Diffstat (limited to 'drivers/char/amiserial.c')
-rw-r--r-- | drivers/char/amiserial.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/drivers/char/amiserial.c b/drivers/char/amiserial.c index feb4ac802a0d..0e2b72f2b887 100644 --- a/drivers/char/amiserial.c +++ b/drivers/char/amiserial.c | |||
@@ -527,10 +527,8 @@ static void do_softint(unsigned long private_) | |||
527 | if (!tty) | 527 | if (!tty) |
528 | return; | 528 | return; |
529 | 529 | ||
530 | if (test_and_clear_bit(RS_EVENT_WRITE_WAKEUP, &info->event)) { | 530 | if (test_and_clear_bit(RS_EVENT_WRITE_WAKEUP, &info->event)) |
531 | tty_wakeup(tty); | 531 | tty_wakeup(tty); |
532 | wake_up_interruptible(&tty->write_wait); | ||
533 | } | ||
534 | } | 532 | } |
535 | 533 | ||
536 | /* | 534 | /* |
@@ -904,8 +902,7 @@ static int rs_write(struct tty_struct * tty, const unsigned char *buf, int count | |||
904 | if (!info->xmit.buf) | 902 | if (!info->xmit.buf) |
905 | return 0; | 903 | return 0; |
906 | 904 | ||
907 | local_save_flags(flags); | 905 | local_irq_save(flags); |
908 | local_irq_disable(); | ||
909 | while (1) { | 906 | while (1) { |
910 | c = CIRC_SPACE_TO_END(info->xmit.head, | 907 | c = CIRC_SPACE_TO_END(info->xmit.head, |
911 | info->xmit.tail, | 908 | info->xmit.tail, |
@@ -968,7 +965,6 @@ static void rs_flush_buffer(struct tty_struct *tty) | |||
968 | local_irq_save(flags); | 965 | local_irq_save(flags); |
969 | info->xmit.head = info->xmit.tail = 0; | 966 | info->xmit.head = info->xmit.tail = 0; |
970 | local_irq_restore(flags); | 967 | local_irq_restore(flags); |
971 | wake_up_interruptible(&tty->write_wait); | ||
972 | tty_wakeup(tty); | 968 | tty_wakeup(tty); |
973 | } | 969 | } |
974 | 970 | ||