aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/edac/edac_mc.c
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2009-09-24 23:15:15 -0400
committerPaul Mundt <lethal@linux-sh.org>2009-09-24 23:15:15 -0400
commitc373ba999103fa794f041eab5bd490714d2dee88 (patch)
tree8f2b445b1e0af2491c83527967dbcda76054a486 /drivers/edac/edac_mc.c
parent6f3529f00a0a9ac06413d18d3926adf099cb59af (diff)
parent851b147e4411df6a1e7e90e2a609773c277eefd2 (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Diffstat (limited to 'drivers/edac/edac_mc.c')
-rw-r--r--drivers/edac/edac_mc.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c
index 335b7ebdb11c..b629c41756f0 100644
--- a/drivers/edac/edac_mc.c
+++ b/drivers/edac/edac_mc.c
@@ -418,16 +418,14 @@ static void complete_mc_list_del(struct rcu_head *head)
418 418
419 mci = container_of(head, struct mem_ctl_info, rcu); 419 mci = container_of(head, struct mem_ctl_info, rcu);
420 INIT_LIST_HEAD(&mci->link); 420 INIT_LIST_HEAD(&mci->link);
421 complete(&mci->complete);
422} 421}
423 422
424static void del_mc_from_global_list(struct mem_ctl_info *mci) 423static void del_mc_from_global_list(struct mem_ctl_info *mci)
425{ 424{
426 atomic_dec(&edac_handlers); 425 atomic_dec(&edac_handlers);
427 list_del_rcu(&mci->link); 426 list_del_rcu(&mci->link);
428 init_completion(&mci->complete);
429 call_rcu(&mci->rcu, complete_mc_list_del); 427 call_rcu(&mci->rcu, complete_mc_list_del);
430 wait_for_completion(&mci->complete); 428 rcu_barrier();
431} 429}
432 430
433/** 431/**