Files
linux/kernel
Milton Miller fb29684a7d call_function_many: fix list delete vs add race
commit e6cd1e07a1 upstream.

Peter pointed out there was nothing preventing the list_del_rcu in
smp_call_function_interrupt from running before the list_add_rcu in
smp_call_function_many.

Fix this by not setting refs until we have gotten the lock for the list.
Take advantage of the wmb in list_add_rcu to save an explicit additional
one.

I tried to force this race with a udelay before the lock & list_add and
by mixing all 64 online cpus with just 3 random cpus in the mask, but
was unsuccessful.  Still, inspection shows a valid race, and the fix is
a extension of the existing protection window in the current code.

Reported-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Milton Miller <miltonm@bga.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-03-23 13:16:53 -07:00
..
2009-12-18 14:03:52 -08:00
2009-06-24 00:02:38 -04:00
2009-09-18 09:48:52 -07:00
2011-02-17 15:37:19 -08:00
2009-08-29 14:10:07 +02:00
2009-09-19 13:13:17 -07:00
2009-05-15 07:56:24 -05:00
2011-02-17 15:37:19 -08:00
2009-07-24 10:53:29 +02:00
2010-07-05 11:10:31 -07:00
2009-06-18 13:03:56 -07:00
2009-10-29 08:56:20 +10:30
2010-05-26 14:29:18 -07:00
2009-10-07 08:11:20 +02:00
2009-09-23 07:39:41 -07:00
2011-02-17 15:37:19 -08:00
2009-07-12 14:03:27 -07:00
2009-09-23 18:13:10 -07:00
2009-06-18 13:03:55 -07:00