Messages in this thread Patch in this message | | | Subject | Re: kernel oops! | From | ierdnah <> | Date | Fri, 28 Jan 2005 22:00:01 +0200 |
| |
On Thu, 2005-01-27 at 15:35 -0800, Linus Torvalds wrote:
the last patch works, but the load increases very much (normally with 200 VPN connections I have a load of maximum 10, with this patch I have a load of 50-100 - after 30 min of uptime)
> You probably should. The patch you've tested is really ugly, and not a fix > at all - it's really just depending on the compiler generating a specific > code sequence that will hide the race. As such, it's a patch I would only > accept in the standard kernel as an absolute last resort. > > In contrast, the second patch I tested may actually _fix_ the race. > > The fact that the first patch makes the oops go away is a good thing, > though: it shows that your oops really was due to that small race window, > and as such it helps validate that it wasn't anything else.
--- 1.32/drivers/char/pty.c 2005-01-10 17:29:36 -08:00 +++ edited/drivers/char/pty.c 2005-01-23 10:21:04 -08:00 @@ -149,13 +149,17 @@ static int pty_chars_in_buffer(struct tty_struct *tty) { struct tty_struct *to = tty->link; - int count; + int count = 0; - if (!to || !to->ldisc.chars_in_buffer) - return 0; - - /* The ldisc must report 0 if no characters available to be read */ - count = to->ldisc.chars_in_buffer(to); + if (to) { + struct tty_ldisc *ld = tty_ldisc_ref(to); + if (ld) { + if (ld->chars_in_buffer) { + count = ld->chars_in_buffer(to); + tty_ldisc_deref(ld); + } + } + } if (tty->driver->subtype == PTY_TYPE_SLAVE) return count; -- ierdnah <ierdnah@go.ro>
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |