Hi,
This patchset contains another, revived patch (1/2). As we had quite some trouble validating the patches back then in Aalborg, I tried to push the overall structure in a hopefully easier to read and comprehend, API like style. While keeping the initial idea (that is, steal and claim forwarding packets from the queue under spinlock, then wait and free without spinlock as a second step) intact.
The second patch is another kernel splat I came across while playing with msleep(s)/mdelay()s in the purging routines.
Regards, Linus
PS: Especially for 1/2 I'm unsure whether to target it for maint/stable. It didn't seem to be a show stopper for anyone within the last three years (had been the only one reporting it at #168, I think?). And the fix is difficult to do as one-liners, unless risking to introduce new race conditions.