Hello, On Tue, Mar 12, 2013 at 01:08:15PM +0800, Lei Wen wrote: > diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h > index 8afab27..425d5a2 100644 > --- a/include/linux/workqueue.h > +++ b/include/linux/workqueue.h > @@ -189,12 +189,16 @@ static inline unsigned int work_static(struct > work_struct *work) { return 0; } > * NOTE! No point in using "atomic_long_set()": using a direct > * assignment of the work data initializer allows the compiler > * to generate better code. > + * > + * We take the assumption that work should not be inited if it already > + * hold the pending bit, or bug would be reported. > */ > #ifdef CONFIG_LOCKDEP > #define __INIT_WORK(_work, _func, _onstack) \ > do { \ > static struct lock_class_key __key; \ > \ > + BUG_ON(work_pending(_work)); \
You're initializing random piece of memory which may contain any garbage and triggering BUG if some bit is set on it. No, you can't do that. debugobj is the right tool for debugging object lifetime issues and is already supported. 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/