Just received the above (title) upon booting 2.1.84. The reported
address translated to inet6_rt_notify, and repeated 4 times.
Linus, let's decide what we want the semantics of certain things to
be. The new definition of in_interrupt() in linux/interrupt.h (which
btw in an of itself is a no-no, it references elements of the
interrupt protection mechanism which we both agreed would be
per-architecture and therefore should not be mentioned by name in a
generic header) counts "in interrupt" as either being within a true HW
IRQ handler or within a BH, however now code which does:
net_foo()
{
/* We run from user context, but need to protect
* against incoming packet handling code...
*/
start_bh_atomic();
...
/* This now doesn't work with the current code... */
skb = alloc_skb(size, GFP_KERNEL);
...
end_bh_atomic();
}
won't work anymore...
A lot of pieces of code do things like this, start a BH atomic from
base level code and call something which can only legitimately run
from non-IRQ code under certain circumstances.
Is this just an oversight, or is there something else going on?
Later,
David S. Miller
davem@dm.cobaltmicro.com