mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] new tty buffering access fix
@ 2006-01-11 23:51 Paul Fulghum
  2006-01-12  0:08 ` Andrew Morton
  0 siblings, 1 reply; 4+ messages in thread
From: Paul Fulghum @ 2006-01-11 23:51 UTC (permalink / raw)
  To: linux-kernel; +Cc: Linus Torvalds, Andrew Morton


Fix typos in new tty buffering that incorrectly
access and update buffers in pending queue.

Signed-off-by: Paul Fulghum <paulkf@microgate.com>
Acked-by: Alan Cox <alan@redhat.com>


--- linux-2.6.15/drivers/char/tty_io.c	2006-01-11 16:22:10.000000000 -0600
+++ linux-2.6.15-mg/drivers/char/tty_io.c	2006-01-11 16:21:52.000000000 -0600
@@ -312,7 +312,7 @@ static struct tty_buffer *tty_buffer_fin
 
 int tty_buffer_request_room(struct tty_struct *tty, size_t size)
 {
-	struct tty_buffer *b = tty->buf.head, *n;
+	struct tty_buffer *b = tty->buf.tail, *n;
 	int left = 0;
 
 	/* OPTIMISATION: We could keep a per tty "zero" sized buffer to
@@ -326,7 +326,6 @@ int tty_buffer_request_room(struct tty_s
 	n = tty_buffer_find(tty, size);
 	if(n == NULL)
 		return left;
-	n->next = b;
 	if(b != NULL)
 		b->next = n;
 	else
@@ -2751,6 +2750,8 @@ static void flush_to_ldisc(void *private
 	spin_lock_irqsave(&tty->read_lock, flags);
 	while((tbuf = tty->buf.head) != NULL) {
 		tty->buf.head = tbuf->next;
+		if (tty->buf.head == NULL)
+			tty->buf.tail = NULL;
 		spin_unlock_irqrestore(&tty->read_lock, flags);
 		/* printk("Process buffer %p for %d\n", tbuf, tbuf->used); */
 		disc->receive_buf(tty, tbuf->char_buf_ptr,
@@ -2759,7 +2760,6 @@ static void flush_to_ldisc(void *private
 		spin_lock_irqsave(&tty->read_lock, flags);
 		tty_buffer_free(tty, tbuf);
 	}
-	tty->buf.tail = NULL;
 	spin_unlock_irqrestore(&tty->read_lock, flags);
 out:
 	tty_ldisc_deref(disc);




^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2006-01-12  0:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-01-11 23:51 [PATCH] new tty buffering access fix Paul Fulghum
2006-01-12  0:08 ` Andrew Morton
2006-01-12  0:27   ` Paul Fulghum
2006-01-12  0:37   ` Alan Cox

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome