[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>
Šī revīzija ir iekļauta:
Dave Peterson
2006-03-26 01:38:50 -08:00
revīziju iesūtīja Linus Torvalds
vecāks 472678ebd3
revīzija 18dbc337af
8 mainīti faili ar 37 papildinājumiem un 49 dzēšanām

Parādīt failu

@@ -410,14 +410,11 @@ void edac_mc_dump_csrow(struct csrow_info *csrow);
#endif /* CONFIG_EDAC_DEBUG */
extern int edac_mc_add_mc(struct mem_ctl_info *mci);
extern int edac_mc_del_mc(struct mem_ctl_info *mci);
extern struct mem_ctl_info * edac_mc_del_mc(struct pci_dev *pdev);
extern int edac_mc_find_csrow_by_page(struct mem_ctl_info *mci,
unsigned long page);
extern struct mem_ctl_info *edac_mc_find_mci_by_pdev(struct pci_dev
*pdev);
extern void edac_mc_scrub_block(unsigned long page,
unsigned long offset, u32 size);