History

workqueue: Provide destroy_delayed_work_on_stack()

If a delayed or deferrable work is on stack we need to tell debug objects that we are destroying the timer and the work. Otherwise we leak the tracking object.

Thomas Gleixner committed 12 years ago

Commit ea2e64f1 parent 87291a92 files · +9 −0Browse files

Showing the changes to kernel/workqueue.c (1 of 2 files). Show all

Unified · Split

kernel/workqueue.c+7−0
@@ -516,6 +516,13 @@ void destroy_work_on_stack(struct work_struct *work) · 515 unmodified lines
516516 }
517517 EXPORT_SYMBOL_GPL(destroy_work_on_stack);
518518
519+void destroy_delayed_work_on_stack(struct delayed_work *work)
520+{
521+ destroy_timer_on_stack(&work->timer);
522+ debug_object_free(&work->work, &work_debug_descr);
523+}
524+EXPORT_SYMBOL_GPL(destroy_delayed_work_on_stack);
525+
519526 #else
520527 static inline void debug_work_activate(struct work_struct *work) { }
521528 static inline void debug_work_deactivate(struct work_struct *work) { }