On Mon, Mar 09, 2015 at 04:43:11AM +0000, Du, Changbin wrote: > From cdebb88ac0fb3f900ef28f28ccb4a12159c295db Mon Sep 17 00:00:00 2001 > From: "Du, Changbin" <changbin...@gmail.com> > Date: Mon, 9 Mar 2015 12:06:43 +0800 > Subject: [PATCH] workqueue: detect uninitated work_struct and BUG() if true > > Recently I encounter a driver issue that caused by missing initializing > the work_struct. Then the work never get executed and stay in workqueue > forever. This take me some time to locate the error. This issue can be > seen early if detect it when queuing a work. > > Signed-off-by: Du, Changbin <changbin...@intel.com> > --- > kernel/workqueue.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/kernel/workqueue.c b/kernel/workqueue.c > index f288493..5c1a5bc 100644 > --- a/kernel/workqueue.c > +++ b/kernel/workqueue.c > @@ -1295,6 +1295,9 @@ static void __queue_work(int cpu, struct > workqueue_struct *wq, > */ > WARN_ON_ONCE(!irqs_disabled()); > > + if (!work->func) > + BUG(); > + > debug_work_activate(work);
Can't this be part of the debug_work mechanism? I'm a bit wary of adding essentially arbitrary checks. I'd much prefer if it gets gated by debug config somehow. Thanks. -- tejun -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/