Re: 2.4.7 softirq incorrectness.

Andrea Arcangeli (andrea@suse.de)
Thu, 26 Jul 2001 00:23:57 +0200


On Tue, Jul 24, 2001 at 02:24:47AM +0400, Alexey Kuznetsov wrote:
> Hello!
>
> > The first netif_rx is required to run from interrupt handler
>
> No! netif_rx() is called from _any_ context. Check with grep.

Originally it was a cpu_raise_softirq, but David asked to put the __ so
Linus added the comment as well:

/* Runs from irqs or BH's, no need to wake BH */

At that time I checked loopback that runs under the bh so it's ok too.

> So, this must be repaired in some way.

Yes. If ethertap or others runs outside bh and irq they could use if
(pending) do_softirq by hand (or as worse wakeup ksoftirqd by hand)
after netif_rx.

> Actually, assumption that local_bh_enable() etc does not happen
> with disabled irq was the biggest hole in Ingo's patch: all the functions

I hoped it was never the case because when you serialize against bh it's
because you are using the bh logic instead of irqs and the whole point
of the bh logic is to left irq enabled. but I'm not surprised some
problem actually triggered because of this change.

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