Re: kernel oops!

From: ierdnah
Date: Fri Jan 28 2005 - 15:12:20 EST


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@xxxxx>

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