linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* cancel_delayed_work() semantics broken?
@ 2012-10-18 23:00 Dan Magenheimer
  2012-10-18 23:25 ` Tejun Heo
  2012-10-18 23:39 ` [PATCH] workqueue: cancel_delayed_work() should return %NULL if work item is idle Tejun Heo
  0 siblings, 2 replies; 5+ messages in thread
From: Dan Magenheimer @ 2012-10-18 23:00 UTC (permalink / raw)
  To: tj; +Cc: linux-kernel, Konrad Wilk

Hi Tejun --

Forgive me if I am missing something, but it appears
that your commit:  57b30ae77bf00d2318df711ef9a4d2a9be0a3a2a
(workqueue: reimplement cancel_delayed_work() using try_to_grab_pending())
has subtly broken the semantics of the function. If
work was idle, according to the comment, it should
return false, correct?

It appears that very few callsites check the return value,
but ramster does, as does ocfs2 from whence the code at the
ramster callsite was derived.  They both decrement
a kref count based on the return value.

I am still looking at try_to_grab_pending as I am not sure
if its semantics have also changed.

Thanks,
Dan

Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com>

diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index d951daa..042d221 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -2982,7 +2982,7 @@ bool cancel_delayed_work(struct delayed_work *dwork)
 
 	set_work_cpu_and_clear_pending(&dwork->work, work_cpu(&dwork->work));
 	local_irq_restore(flags);
-	return true;
+	return ret;
 }
 EXPORT_SYMBOL(cancel_delayed_work);

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-10-29 15:14 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-10-18 23:00 cancel_delayed_work() semantics broken? Dan Magenheimer
2012-10-18 23:25 ` Tejun Heo
2012-10-18 23:39 ` [PATCH] workqueue: cancel_delayed_work() should return %NULL if work item is idle Tejun Heo
2012-10-29  9:47   ` Andrei Emeltchenko
2012-10-29 15:14     ` Tejun Heo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).