aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/tty_flip.h
diff options
context:
space:
mode:
authorPaul Fulghum <paulkf@microgate.com>2006-02-10 01:51:14 -0800
committerLinus Torvalds <torvalds@g5.osdl.org>2006-02-10 08:13:12 -0800
commit8977d929e49021d9a6e031310aab01fa72f849c2 (patch)
tree13697e607b1153666139114242964f9982acc328 /include/linux/tty_flip.h
parent[PATCH] slab: Avoid deadlock at kmem_cache_create/kmem_cache_destroy (diff)
downloadlinux-dev-8977d929e49021d9a6e031310aab01fa72f849c2.tar.xz
linux-dev-8977d929e49021d9a6e031310aab01fa72f849c2.zip
[PATCH] tty buffering stall fix
Prevent stalled processing of received data when a driver allocates tty buffer space but does not immediately follow the allocation with more data and a call to schedule receive tty processing. (example: hvc_console) This bug was introduced by the first locking patch for the new tty buffering. Signed-off-by: Paul Fulghum <paulkf@microgate.com> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux/tty_flip.h')
-rw-r--r--include/linux/tty_flip.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/include/linux/tty_flip.h b/include/linux/tty_flip.h
index 82961eb19888..222faf97d5f9 100644
--- a/include/linux/tty_flip.h
+++ b/include/linux/tty_flip.h
@@ -29,8 +29,10 @@ _INLINE_ void tty_schedule_flip(struct tty_struct *tty)
{
unsigned long flags;
spin_lock_irqsave(&tty->buf.lock, flags);
- if (tty->buf.tail != NULL)
+ if (tty->buf.tail != NULL) {
tty->buf.tail->active = 0;
+ tty->buf.tail->commit = tty->buf.tail->used;
+ }
spin_unlock_irqrestore(&tty->buf.lock, flags);
schedule_delayed_work(&tty->buf.work, 1);
}