summaryrefslogtreecommitdiffstats
path: root/include/linux/kbd_kern.h
diff options
context:
space:
mode:
authorPaul Fulghum2006-02-10 10:51:14 +0100
committerLinus Torvalds2006-02-10 17:13:12 +0100
commit8977d929e49021d9a6e031310aab01fa72f849c2 (patch)
tree13697e607b1153666139114242964f9982acc328 /include/linux/kbd_kern.h
parent[PATCH] slab: Avoid deadlock at kmem_cache_create/kmem_cache_destroy (diff)
downloadkernel-qcow2-linux-8977d929e49021d9a6e031310aab01fa72f849c2.tar.gz
kernel-qcow2-linux-8977d929e49021d9a6e031310aab01fa72f849c2.tar.xz
kernel-qcow2-linux-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/kbd_kern.h')
-rw-r--r--include/linux/kbd_kern.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/include/linux/kbd_kern.h b/include/linux/kbd_kern.h
index 3aed37314ab8..e87c32a5c86a 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);
}