Hello, On Thu, Jun 16, 2016 at 01:17:28PM +0200, Petr Mladek wrote: > +/** > + * kthread_delayed_work_timer_fn - callback that queues the associated kthread > + * delayed work when the timer expires. > + * @__data: pointer to the data associated with the timer > + * > + * The format of the function is defined by struct timer_list. > + * It should have been called from irqsafe timer with irq already off. > + */ > +void kthread_delayed_work_timer_fn(unsigned long __data) > +{ > + struct kthread_delayed_work *dwork = > + (struct kthread_delayed_work *)__data; > + struct kthread_work *work = &dwork->work; > + struct kthread_worker *worker = work->worker; > + > + /* > + * This might happen when a pending work is reinitialized. > + * It means that it is used a wrong way. > + */ > + if (WARN_ON_ONCE(!worker)) > + return; > + > + spin_lock(&worker->lock); > + /* Work must not be used with more workers, see kthread_queue_work(). */ ^ ditto, this reads weird Other than that, Acked-by: Tejun Heo <tj@xxxxxxxxxx> Thanks. -- tejun -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>