diff options
author | Paul Fulghum <paulkf@microgate.com> | 2006-02-10 01:51:14 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-02-10 08:13:12 -0800 |
commit | 8977d929e49021d9a6e031310aab01fa72f849c2 (patch) | |
tree | 13697e607b1153666139114242964f9982acc328 /include/linux/kbd_kern.h | |
parent | f0188f47482efdbd2e005103bb4f0224a835dfad (diff) |
[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/kbd_kern.h')
-rw-r--r-- | include/linux/kbd_kern.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/include/linux/kbd_kern.h b/include/linux/kbd_kern.h index 3aed37314ab..e87c32a5c86 100644 --- a/include/linux/kbd_kern.h +++ b/include/linux/kbd_kern.h @@ -153,8 +153,10 @@ static inline void con_schedule_flip(struct tty_struct *t) { unsigned long flags; spin_lock_irqsave(&t->buf.lock, flags); - if (t->buf.tail != NULL) + if (t->buf.tail != NULL) { t->buf.tail->active = 0; + t->buf.tail->commit = t->buf.tail->used; + } spin_unlock_irqrestore(&t->buf.lock, flags); schedule_work(&t->buf.work); } |