Re: Problem with dev_kfree_skb_any() in 2.6.0

From: Jeff Garzik
Date: Tue Dec 30 2003 - 00:16:28 EST


On Mon, Dec 29, 2003 at 08:51:57PM -0800, David S. Miller wrote:
> On Mon, 29 Dec 2003 23:09:14 -0500
> Jeff Garzik <jgarzik@xxxxxxxxx> wrote:
>
> > Not really... pretty much _all_ TX queue packet freeing occurs inside
> > an irq handler and inside the driver spinlock. Further, we don't want
> > to reinvent some sort of "queue skb for freeing" code in every driver.
>
> There is one important detail not mentioned.
>
> If we let the TX free occur in cpu IRQ disabled context, the
> BH to actually do the work will occur as some indeterminate
> time in the future after the top level IRQ spinlock release
> occurs.
>
> Unlike local_bh_enable(), local_irq_enable() does not run
> softirq work. Similarly when comparing IRQ handler return
> (which also runs softirq work if pending).
>
> This is the most important reason why the suggested change is wrong.

OK, agreed. But fixing it in the driver is still incorrect, also.

We need a single solution in the net stack, not a per-driver solution.

Look at the purpose behind his patch...

Jeff



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