aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/edac/edac_mc.h
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/edac_mc.h
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/edac_mc.h')
-rw-r--r--drivers/edac/edac_mc.h5
1 files changed, 1 insertions, 4 deletions
diff --git a/drivers/edac/edac_mc.h b/drivers/edac/edac_mc.h
index c9c1590db721..2cec157aaeba 100644
--- a/drivers/edac/edac_mc.h
+++ b/drivers/edac/edac_mc.h
@@ -410,14 +410,11 @@ void edac_mc_dump_csrow(struct csrow_info *csrow);
410#endif /* CONFIG_EDAC_DEBUG */ 410#endif /* CONFIG_EDAC_DEBUG */
411 411
412extern int edac_mc_add_mc(struct mem_ctl_info *mci); 412extern int edac_mc_add_mc(struct mem_ctl_info *mci);
413extern int edac_mc_del_mc(struct mem_ctl_info *mci); 413extern struct mem_ctl_info * edac_mc_del_mc(struct pci_dev *pdev);
414 414
415extern int edac_mc_find_csrow_by_page(struct mem_ctl_info *mci, 415extern int edac_mc_find_csrow_by_page(struct mem_ctl_info *mci,
416 unsigned long page); 416 unsigned long page);
417 417
418extern struct mem_ctl_info *edac_mc_find_mci_by_pdev(struct pci_dev
419 *pdev);
420
421extern void edac_mc_scrub_block(unsigned long page, 418extern void edac_mc_scrub_block(unsigned long page,
422 unsigned long offset, u32 size); 419 unsigned long offset, u32 size);
423 420