lkml.org 
[lkml]   [2000]   [Jul]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Race in n_tty.c write_chan()
Andrea --

This patch is now in 2.2.17--thanks--but it has not shown up in 2.4.0
yet. Can we get this patch 2.4.0, too? It would help out the USB
serial drivers where this race is a problem--we can work around it
mostly but the workaround is not ideal.

Thanks alot,
-- Al Borchers

Andrea Arcangeli wrote:
>
> On Wed, 28 Jun 2000, Al Borchers wrote:
>
> >Our fix corrects the problem on UP, but theoretically (I think) there
> >is still a race on SMP. We have not actually seen the problem in our
> >testing on SMP, however.
>
> Good spotting. This below is the right fix for 2.2.16pre6. Taking page
> faults with the task in interruptible state is safe. Linus only suggested
> to split schedule() in two parts so that in the low-latency patch (in
> things like the _necessary_ [but still actually missing!] low-latency
> checks in the copy-user stuff) instead of doing:
>
> if (current->need_resched) {
> current->state = TASK_RUNNING;
> schedule();
> }
>
> we could do something of faster like:
>
> if (current->need_resched)
> __schedule_core();
>
> --- 2.2.17pre6aa2/drivers/char/n_tty.c Tue Jun 13 03:48:13 2000
> +++ 2.2.14/drivers/char/n_tty.c Mon Jan 17 16:44:37 2000
> @@ -1142,9 +1094,7 @@
> nr -= num;
> if (nr == 0)
> break;
> - current->state = TASK_RUNNING;
> get_user(c, b);
> - current->state = TASK_INTERRUPTIBLE;
> if (opost(c, tty) < 0)
> break;
> b++; nr--;
> @@ -1152,9 +1102,7 @@
> if (tty->driver.flush_chars)
> tty->driver.flush_chars(tty);
> } else {
> - current->state = TASK_RUNNING;
> c = tty->driver.write(tty, 1, b, nr);
> - current->state = TASK_INTERRUPTIBLE;
> if (c < 0) {
> retval = c;
> goto break_out;
>
> Andrea

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:57    [W:0.072 / U:0.068 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site