Messages in this thread |  | | Date | Mon, 9 Oct 2000 02:20:27 +0200 | From | "Andi Kleen" <> | Subject | Re: Calling current() from interrupt context |
| |
On Mon, Oct 09, 2000 at 12:30:17AM +0200, Jamie Lokier wrote: > Kenn Humborg wrote: > > My feeling is that interrupt code has no business calling current(), > > but I don't know the kernel well enough to be sure. Is there any > > interrupt-level code that calls current() or is it a design > > principle that it cannot be called? > > It's a design principle that you must not call "current" in interrupt, > bottom half or tasklet context. From time to time buggy code is found > to do this, and it gets away with it. (See recent thread on network I/O > signal delivery using the wrong credentials due to a bug like this). > > So if you can make the machine crash utterly when calling "current" in > irq context, or when dereferencing the result, that would probably be a > good thing :-)
2.4 TCP code relies on current being valid in a softirq.
The m68k port which has a interrupt stack solves the problem by loading current into a global register variable on all kernel entries. x86-64 will likely do the same.
-Andi - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
|  |