On Tue, Dec 8, 2009 at 9:28 PM, David Miller [off-list ref] wrote:
From: Grant Likely <redacted>
Date: Fri, 04 Dec 2009 21:33:13 -0700
quoted
Fix the locking scheme on the fec_mpc52xx driver. This device can
receive IRQs from three sources; the FEC itself, the tx DMA, and the
rx DMA. Mutual exclusion was handled by taking a spin_lock() in the
critical regions, but because the handlers are run with IRQs enabled,
spin_lock() is insufficient and the driver can end up interrupting
a critical region anyway from another IRQ.
Asier Llano discovered that this occurs when an error IRQ is raised
in the middle of handling rx irqs which resulted in an sk_buff memory
leak.
I'll apply this fix.
Thanks.
But, longer term, it's a thousand times easier and more efficient to
move the processing of these interrupts into softirq context.
I agree. Just need to find someone to do it.
g.
--
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.