aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/edac/i82875p_edac.c
diff options
context:
space:
mode:
authorDave Peterson <dsp@llnl.gov>2006-03-26 04:38:50 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-03-26 11:57:07 -0500
commit18dbc337af5d6efd30cb9291e74722c8ad134fd3 (patch)
tree10163d19960173d29deb7a9d931dfcdfe2188975 /drivers/edac/i82875p_edac.c
parent472678ebd30d87cbe8d97562dcc0e46d1076040f (diff)
[PATCH] EDAC: protect memory controller list
- Fix code so we always hold mem_ctls_mutex while we are stepping through the list of mem_ctl_info structures. Otherwise bad things may happen if one task is stepping through the list while another task is modifying it. We may eventually want to use reference counting to manage the mem_ctl_info structures. In the meantime we may as well fix this bug. - Don't disable interrupts while we are walking the list of mem_ctl_info structures in check_mc_devices(). This is unnecessary. Signed-off-by: David S. Peterson <dsp@llnl.gov> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/edac/i82875p_edac.c')
-rw-r--r--drivers/edac/i82875p_edac.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/drivers/edac/i82875p_edac.c b/drivers/edac/i82875p_edac.c
index 40ba2be6169a..aad1900a4689 100644
--- a/drivers/edac/i82875p_edac.c
+++ b/drivers/edac/i82875p_edac.c
@@ -452,7 +452,7 @@ static void __devexit i82875p_remove_one(struct pci_dev *pdev)
452 452
453 debugf0("%s()\n", __func__); 453 debugf0("%s()\n", __func__);
454 454
455 if ((mci = edac_mc_find_mci_by_pdev(pdev)) == NULL) 455 if ((mci = edac_mc_del_mc(pdev)) == NULL)
456 return; 456 return;
457 457
458 pvt = (struct i82875p_pvt *) mci->pvt_info; 458 pvt = (struct i82875p_pvt *) mci->pvt_info;
@@ -467,9 +467,6 @@ static void __devexit i82875p_remove_one(struct pci_dev *pdev)
467 pci_dev_put(pvt->ovrfl_pdev); 467 pci_dev_put(pvt->ovrfl_pdev);
468 } 468 }
469 469
470 if (edac_mc_del_mc(mci))
471 return;
472
473 edac_mc_free(mci); 470 edac_mc_free(mci);
474} 471}
475 472