Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'edac_fixes_for_3.8' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp

Pull EDAC fixes from Borislav Petkov:
"Two error path fixes causing a crash and a Kconfig fix for an issue
which spilled all EDAC suboptions into the 'Device Drivers' menu."

* tag 'edac_fixes_for_3.8' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp:
EDAC: Cleanup device deregistering path
EDAC: Fix EDAC Kconfig menu
EDAC: Fix kernel panic on module unloading

+9 -18
+3 -5
drivers/edac/Kconfig
··· 4 4 # Licensed and distributed under the GPL 5 5 # 6 6 7 + config EDAC_SUPPORT 8 + bool 9 + 7 10 menuconfig EDAC 8 11 bool "EDAC (Error Detection And Correction) reporting" 9 12 depends on HAS_IOMEM ··· 30 27 There is also a mailing list for the EDAC project, which can 31 28 be found via the sourceforge page. 32 29 33 - config EDAC_SUPPORT 34 - bool 35 - 36 30 if EDAC 37 - 38 - comment "Reporting subsystems" 39 31 40 32 config EDAC_LEGACY_SYSFS 41 33 bool "EDAC legacy sysfs"
+6 -13
drivers/edac/edac_mc_sysfs.c
··· 472 472 device_remove_file(&csrow->dev, 473 473 dynamic_csrow_ce_count_attr[chan]); 474 474 } 475 - put_device(&mci->csrows[i]->dev); 476 - device_del(&mci->csrows[i]->dev); 475 + device_unregister(&mci->csrows[i]->dev); 477 476 } 478 477 } 479 478 #endif ··· 1054 1055 struct dimm_info *dimm = mci->dimms[i]; 1055 1056 if (dimm->nr_pages == 0) 1056 1057 continue; 1057 - put_device(&dimm->dev); 1058 - device_del(&dimm->dev); 1058 + device_unregister(&dimm->dev); 1059 1059 } 1060 - put_device(&mci->dev); 1061 - device_del(&mci->dev); 1060 + device_unregister(&mci->dev); 1062 1061 bus_unregister(&mci->bus); 1063 1062 kfree(mci->bus.name); 1064 1063 return err; ··· 1083 1086 if (dimm->nr_pages == 0) 1084 1087 continue; 1085 1088 edac_dbg(0, "removing device %s\n", dev_name(&dimm->dev)); 1086 - put_device(&dimm->dev); 1087 - device_del(&dimm->dev); 1089 + device_unregister(&dimm->dev); 1088 1090 } 1089 1091 } 1090 1092 1091 1093 void edac_unregister_sysfs(struct mem_ctl_info *mci) 1092 1094 { 1093 1095 edac_dbg(1, "Unregistering device %s\n", dev_name(&mci->dev)); 1094 - put_device(&mci->dev); 1095 - device_del(&mci->dev); 1096 + device_unregister(&mci->dev); 1096 1097 bus_unregister(&mci->bus); 1097 1098 kfree(mci->bus.name); 1098 1099 } ··· 1154 1159 1155 1160 void __exit edac_mc_sysfs_exit(void) 1156 1161 { 1157 - put_device(mci_pdev); 1158 - device_del(mci_pdev); 1162 + device_unregister(mci_pdev); 1159 1163 edac_put_sysfs_subsys(); 1160 - kfree(mci_pdev); 1161 1164 }