I've been looking at this and I sent Andrea+Linus private mail on this
to try and work out a fix.
You can't simply stop enabling the softirq when you hit the "locked
tasklet" condition. That could deadlock the tasklet.
What really needs to happen is:
1) If tasklet is scheduled, but disabled, simply ignore it
during tasklet processing. Do not resignal softirq.
But do leave it on the pending lists.
2) When tasklet enable brings t->count back to zero and
tasklet is found to be scheduled, signal a local softirq.
To me, that would be the proper fix. But I still haven't heard back
from Andrea or Linus yet :-)
Franks a lot,
David S. Miller
davem@redhat.com
-
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/