lkml.org 
[lkml]   [2005]   [May]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: A patch for the file kernel/fork.c
From
Date
> >>In a preemptible kernel with the serport module and a serial port try to
> >>run the following program:
> >>
> >>int main(int argc, char **argv)
> >>{
> >> int ldisc,fd;
> >>
> >> fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NONBLOCK);
> >> ldisc = N_MOUSE;
> >> ioctl(fd, TIOCSETD, &ldisc);
> >> read(fd, NULL, 0);
> >> return 0;
> >>}
> >>
> >>and kill it. In my case it will hang the computer. I think this is
> >>a problem with the serport module. With this patch, the serial mouse
> >>stop working, but the computer don't hang.
> >>
> >>
> >
> >then above something like:
> >
> > BUG_ON(!mm);
> >
> >or something might be better and eyeball the stack trace.
> >
> >
> In my example, a stack trace will be already generated by an oops:
> [4300748.423000] Unable to handle kernel paging request at virtual
> address 6b6b6b7b
> [4300748.423000] printing eip:
> [4300748.423000] d0927366
> [4300748.423000] *pde = 00000000
> [4300748.423000] Oops: 0000 [#1]
> [4300748.423000] PREEMPT
> and so on, with a call trace:
> [4300748.423000] Call Trace:
> [4300748.423000] [<c0104bfa>] show_stack+0x7a/0x90
> [4300748.423000] [<c0104d7d>] show_registers+0x14d/0x1b0
> [4300748.423000] [<c0104fcc>] die+0x14c/0x2c0
> [4300748.423000] [<c0118b6f>] do_page_fault+0x31f/0x638
> [4300748.423000] [<c01046df>] error_code+0x4f/0x54
> [4300748.423000] [<c02b88fd>] tty_wakeup+0x5d/0x60
>
> I think that maybe it's good to put a:
> WARN_ON(!mm);
> but a BUG_ON or without this patch, the kernel will halt, even if the
> problem is not so severe.

Patching up the kernel hiding things that must not happen is not the way
to go. All kernel bugs are severe (as you just showed us!). Adding extra
checks like your original patch did may even cause much more harm
because it may hide other problems causing silent problems.

The kernel should scream as loudly as possible when something goes
wrong. Please get the underlying problem fixed instead.

-
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/

\
 
 \ /
  Last update: 2005-05-04 21:22    [W:0.112 / U:0.044 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site