Re: Linux 3.0 release
From: Stephen Hemminger <hidden>
Date: 2011-07-22 22:09:53
Also in:
lkml
On Fri, 22 Jul 2011 23:26:29 +0200 Francois Romieu [off-list ref] wrote:
Stephen Hemminger [off-list ref] :quoted
This a regression which probably began with commit e22bee782b3b00bd4534ae9b1c5fb2e8e6573c5c Author: Tejun Heo [off-list ref] Date: Tue Jun 29 10:07:14 2010 +0200 workqueue: implement concurrency managed dynamic worker pool Before that it was perfectly legal for link watch code to call schedule_delayed_work from IRQ. This should be allowable; the code to manage the worker pool should handle it.I beg to differ: see Ben's first report (http://lists.openwall.net/netdev/2011/05/04/183). ^^ One of the code path in the netif_carrier code leads it to try and disable a late workqueue to reenable it immediately (mod_workqueue anyone ?): netif_carrier_on -> linkwatch_fire_event -> linkwatch_schedule_work -> cancel_delayed_work -> del_timer_sync The del_timer_sync has been here for ages. Afaiks it is not a new pool code nor a schedule_delayed_work only problem.
That path can be fixed by calling _cancel_delayed_work() instead.