mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-28 22:54:05 +08:00
Two error path fixes causing a crash and a Kconfig fix for an issue
which spilled all EDAC suboptions into the 'Device Drivers' menu. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQIcBAABAgAGBQJQ7D0jAAoJEBLB8Bhh3lVKtcgP/3uzBjETQ7KzKG9R+zHxkBom 7pl6UYqgquqpoqP3tGsn0+oaVyEvY3D11NMp/vhGxUjqJjDnIE3T/TvBMIwaRaq1 /bPrZ+hE5d2mHWP/TULEVVYMziHhR9UO1SpB+E7vX7FqKcLwzeiS7CMlm4qjq0qC duXCG/6gyEKIecT3KPuXFzpojV6pSpSIYvLu03hdS3e8w7Wb6jvomWV282TpaSim aFyL909M/f4kexWD0827VnBxogwBWPl1hIGfFVprYGrabgUTtfb/OFhnZut8U1FV giDtDgIC7nATp1LzTK+fPE5kx9yZvrE1SV8ZTNF6r0dYH14fnR3YgbQqbVgbLUYF icQqCHpyZKD+s/ajymq8lg+ltVtROqCLWdT6YFZlaBlObP0sYltpSj1JRcoC5O6c Lx252LQQmxMQZKGnNlBooI6QN73GXlsngTgHD9z3DpFgvRilhA8EmbK2ZFFesdkk R4s25yH8fno6ClhxlwyA3+0vwU9B19Ul00cx4/5ZXPdK56Fq7slM/ORTE5SQFrHH 6QG/pYDz09WXhKvOtX4ZRh2bBudMsY7mgsrxFelGYtsqHikLtYVUzkkyFkccjZMj UWcHUHsdSx+gr4DK/jclW1tDgwzh2G17d3FJobujGSgJJIqM2qOo/izON/g4+ojA RlKqYTCkAh3fX6DZX1vX =Qh4Y -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
57a0c1e2d6
@ -4,6 +4,9 @@
|
|||||||
# Licensed and distributed under the GPL
|
# Licensed and distributed under the GPL
|
||||||
#
|
#
|
||||||
|
|
||||||
|
config EDAC_SUPPORT
|
||||||
|
bool
|
||||||
|
|
||||||
menuconfig EDAC
|
menuconfig EDAC
|
||||||
bool "EDAC (Error Detection And Correction) reporting"
|
bool "EDAC (Error Detection And Correction) reporting"
|
||||||
depends on HAS_IOMEM
|
depends on HAS_IOMEM
|
||||||
@ -27,13 +30,8 @@ menuconfig EDAC
|
|||||||
There is also a mailing list for the EDAC project, which can
|
There is also a mailing list for the EDAC project, which can
|
||||||
be found via the sourceforge page.
|
be found via the sourceforge page.
|
||||||
|
|
||||||
config EDAC_SUPPORT
|
|
||||||
bool
|
|
||||||
|
|
||||||
if EDAC
|
if EDAC
|
||||||
|
|
||||||
comment "Reporting subsystems"
|
|
||||||
|
|
||||||
config EDAC_LEGACY_SYSFS
|
config EDAC_LEGACY_SYSFS
|
||||||
bool "EDAC legacy sysfs"
|
bool "EDAC legacy sysfs"
|
||||||
default y
|
default y
|
||||||
|
@ -472,8 +472,7 @@ static void edac_delete_csrow_objects(struct mem_ctl_info *mci)
|
|||||||
device_remove_file(&csrow->dev,
|
device_remove_file(&csrow->dev,
|
||||||
dynamic_csrow_ce_count_attr[chan]);
|
dynamic_csrow_ce_count_attr[chan]);
|
||||||
}
|
}
|
||||||
put_device(&mci->csrows[i]->dev);
|
device_unregister(&mci->csrows[i]->dev);
|
||||||
device_del(&mci->csrows[i]->dev);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -1055,11 +1054,9 @@ fail:
|
|||||||
struct dimm_info *dimm = mci->dimms[i];
|
struct dimm_info *dimm = mci->dimms[i];
|
||||||
if (dimm->nr_pages == 0)
|
if (dimm->nr_pages == 0)
|
||||||
continue;
|
continue;
|
||||||
put_device(&dimm->dev);
|
device_unregister(&dimm->dev);
|
||||||
device_del(&dimm->dev);
|
|
||||||
}
|
}
|
||||||
put_device(&mci->dev);
|
device_unregister(&mci->dev);
|
||||||
device_del(&mci->dev);
|
|
||||||
bus_unregister(&mci->bus);
|
bus_unregister(&mci->bus);
|
||||||
kfree(mci->bus.name);
|
kfree(mci->bus.name);
|
||||||
return err;
|
return err;
|
||||||
@ -1086,16 +1083,14 @@ void edac_remove_sysfs_mci_device(struct mem_ctl_info *mci)
|
|||||||
if (dimm->nr_pages == 0)
|
if (dimm->nr_pages == 0)
|
||||||
continue;
|
continue;
|
||||||
edac_dbg(0, "removing device %s\n", dev_name(&dimm->dev));
|
edac_dbg(0, "removing device %s\n", dev_name(&dimm->dev));
|
||||||
put_device(&dimm->dev);
|
device_unregister(&dimm->dev);
|
||||||
device_del(&dimm->dev);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void edac_unregister_sysfs(struct mem_ctl_info *mci)
|
void edac_unregister_sysfs(struct mem_ctl_info *mci)
|
||||||
{
|
{
|
||||||
edac_dbg(1, "Unregistering device %s\n", dev_name(&mci->dev));
|
edac_dbg(1, "Unregistering device %s\n", dev_name(&mci->dev));
|
||||||
put_device(&mci->dev);
|
device_unregister(&mci->dev);
|
||||||
device_del(&mci->dev);
|
|
||||||
bus_unregister(&mci->bus);
|
bus_unregister(&mci->bus);
|
||||||
kfree(mci->bus.name);
|
kfree(mci->bus.name);
|
||||||
}
|
}
|
||||||
@ -1159,8 +1154,6 @@ int __init edac_mc_sysfs_init(void)
|
|||||||
|
|
||||||
void __exit edac_mc_sysfs_exit(void)
|
void __exit edac_mc_sysfs_exit(void)
|
||||||
{
|
{
|
||||||
put_device(mci_pdev);
|
device_unregister(mci_pdev);
|
||||||
device_del(mci_pdev);
|
|
||||||
edac_put_sysfs_subsys();
|
edac_put_sysfs_subsys();
|
||||||
kfree(mci_pdev);
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user