linux/drivers/edac
Yanjiang Jin 27bda205ba EDAC, mpc85xx: Implement remove method for the platform driver
If we execute the below steps without this patch:

  modprobe mpc85xx_edac [The first insmod, everything is well.]
  modprobe -r mpc85xx_edac
  modprobe mpc85xx_edac [insmod again, error happens.]

We would get the error messages as below:

  BUG: recent printk recursion!
  Oops: Kernel access of bad area, sig: 11 [#48]
  Modules linked in: mpc85xx_edac edac_core softdog [last unloaded: mpc85xx_edac]
  CPU: 5 PID: 14773 Comm: modprobe Tainted: G D C 4.8.3-rt2
   .vsnprintf
   .vscnprintf
   .vprintk_emit
   .printk
   .edac_pci_add_device
   .mpc85xx_pci_err_probe
   .platform_drv_probe
   .driver_probe_device
   .__driver_attach
   .bus_for_each_dev
   .driver_attach
   .bus_add_driver
   .driver_register
   .__platform_register_drivers
   .mpc85xx_mc_init
   .do_one_initcall
   .do_init_module
   .load_module
   .SyS_finit_module
   system_call

Address this by cleaning up properly when removing the platform driver.

Tested on a T4240QDS board.

Signed-off-by: Yanjiang Jin <yanjiang.jin@windriver.com>
Acked-by: Johannes Thumshirn <jthumshirn@suse.de>
Cc: linux-edac <linux-edac@vger.kernel.org>
Cc: york.sun@nxp.com
Link: http://lkml.kernel.org/r/1479351380-17109-2-git-send-email-yanjiang.jin@windriver.com
[ Boris: massage commit message. ]
Signed-off-by: Borislav Petkov <bp@suse.de>
2016-11-17 11:19:50 +01:00
..
altera_edac.c EDAC, altera: Disable IRQs while injecting SDRAM errors 2016-10-22 20:14:03 +02:00
altera_edac.h EDAC, altera: Rename device trigger to common name 2016-09-01 08:55:24 +02:00
amd64_edac_dbg.c EDAC: amd64: Use static attribute groups 2015-02-23 13:08:09 +01:00
amd64_edac_inj.c EDAC: amd64: Use static attribute groups 2015-02-23 13:08:09 +01:00
amd64_edac.c EDAC, amd64: Autoload module using x86_cpu_id 2016-09-21 12:48:15 +02:00
amd64_edac.h EDAC, amd64_edac: Drop pci_register_driver() use 2016-05-09 20:41:16 +02:00
amd76x_edac.c
amd8111_edac.c
amd8111_edac.h
amd8131_edac.c
amd8131_edac.h
cell_edac.c edac: drop owner assignment from platform_drivers 2014-10-20 16:20:30 +02:00
cpc925_edac.c cpc925_edac: Report UE events properly 2014-10-22 22:58:45 +02:00
debugfs.c EDAC: Use edac_debugfs_remove_recursive() in edac_debugfs_exit() 2016-02-10 10:37:46 +01:00
e7xxx_edac.c e7xxx_edac: Report CE events properly 2014-10-22 22:59:00 +02:00
e752x_edac.c
edac_core.h EDAC: Carve out debugfs functionality 2015-09-22 12:29:46 +02:00
edac_device_sysfs.c EDAC: Remove edac_get_sysfs_subsys() error handling 2015-12-11 16:56:41 +01:00
edac_device.c EDAC: Rework workqueue handling 2015-12-11 16:56:43 +01:00
edac_mc_sysfs.c EDAC: Correct channel count limit 2016-06-16 10:06:35 +02:00
edac_mc.c EDAC, mc: Fix locking around mc_devices list 2016-11-14 13:26:11 +01:00
edac_module.c EDAC: Rework workqueue handling 2015-12-11 16:56:43 +01:00
edac_module.h EDAC: Rework workqueue handling 2015-12-11 16:56:43 +01:00
edac_pci_sysfs.c EDAC: Remove edac_get_sysfs_subsys() error handling 2015-12-11 16:56:41 +01:00
edac_pci.c EDAC: Cleanup/sync workqueue functions 2016-02-02 11:38:50 +01:00
edac_stub.c EDAC: Rip out the edac_subsys reference counting 2015-12-11 16:56:39 +01:00
fsl_ddr_edac.c EDAC, fsl_ddr: Fix error return code in fsl_mc_err_probe() 2016-09-09 19:27:22 +02:00
fsl_ddr_edac.h EDAC, fsl_ddr: Add missing DDR DRAM types 2016-09-01 10:28:01 +02:00
ghes_edac.c EDAC: Fix PAGES_TO_MiB macro misuse 2015-10-22 22:57:30 +02:00
highbank_l2_edac.c
highbank_mc_edac.c EDAC: Constify of_device_id array 2015-03-20 17:50:07 +01:00
i7core_edac.c * Altera Arria10 L2 cache and On-Chip RAM ECC handling. (Thor Thayer) 2016-05-16 18:44:39 -07:00
i3000_edac.c EDAC: Delete unnecessary check before calling pci_dev_put() 2014-11-19 16:33:48 +01:00
i3200_edac.c move io-64-nonatomic*.h out of asm-generic 2015-10-15 00:21:07 +02:00
i5000_edac.c
i5100_edac.c EDAC, i5100: Use to_delayed_work() 2016-01-01 18:31:34 +01:00
i5400_edac.c
i7300_edac.c
i82443bxgx_edac.c EDAC, i82443bxgx: Don't export static symbol 2015-03-11 20:39:15 +01:00
i82860_edac.c EDAC: Delete unnecessary checks before pci_dev_put() 2015-02-23 13:06:23 +01:00
i82875p_edac.c EDAC: Delete unnecessary checks before pci_dev_put() 2015-02-23 13:06:23 +01:00
i82975x_edac.c EDAC: Delete unnecessary checks before pci_dev_put() 2015-02-23 13:06:23 +01:00
ie31200_edac.c EDAC, ie31200_edac: Add Skylake support 2016-05-06 18:50:14 +02:00
Kconfig * Altera Arria10 enablement of NAND, DMA, USB, QSPI and SD-MMC FIFO 2016-10-04 12:06:26 -07:00
layerscape_edac.c EDAC, layerscape: Add Layerscape EDAC support 2016-09-01 10:28:03 +02:00
Makefile * Altera Arria10 enablement of NAND, DMA, USB, QSPI and SD-MMC FIFO 2016-10-04 12:06:26 -07:00
mce_amd.c x86/MCE/AMD, EDAC: Handle reserved bank 4 on Fam17h properly 2016-09-13 15:23:14 +02:00
mce_amd.h x86, mce, severity: Extend the the mce_severity mechanism to handle UCNA/DEFERRED error 2014-11-19 10:55:43 -08:00
mpc85xx_edac.c EDAC, mpc85xx: Implement remove method for the platform driver 2016-11-17 11:19:50 +01:00
mpc85xx_edac.h EDAC, fsl-ddr: Separate FSL DDR driver from MPC85xx 2016-09-01 10:28:00 +02:00
mv64x60_edac.c EDAC: Remove NO_IRQ from powerpc-only drivers 2016-09-12 13:04:56 +02:00
mv64x60_edac.h
octeon_edac-l2c.c EDAC, octeon: Fix broken build due to model helper renames 2015-07-02 10:46:28 +02:00
octeon_edac-lmc.c EDAC, octeon: Fix broken build due to model helper renames 2015-07-02 10:46:28 +02:00
octeon_edac-pc.c EDAC, octeon: Fix broken build due to model helper renames 2015-07-02 10:46:28 +02:00
octeon_edac-pci.c
pasemi_edac.c
ppc4xx_edac.c EDAC: Remove NO_IRQ from powerpc-only drivers 2016-09-12 13:04:56 +02:00
ppc4xx_edac.h
r82600_edac.c
sb_edac.c EDAC, sb_edac: Add Knights Mill support 2016-10-19 12:37:44 +02:00
skx_edac.c EDAC, skx_edac: Fix non static symbol warnings 2016-10-22 20:10:38 +02:00
synopsys_edac.c EDAC: Constify of_device_id array 2015-03-20 17:50:07 +01:00
tile_edac.c edac: drop owner assignment from platform_drivers 2014-10-20 16:20:30 +02:00
wq.c EDAC, wq: Remove deprecated create_singlethread_workqueue() 2016-08-15 07:21:29 +02:00
x38_edac.c move io-64-nonatomic*.h out of asm-generic 2015-10-15 00:21:07 +02:00
xgene_edac.c EDAC, xgene: Fix spelling mistake in error messages 2016-11-15 11:10:02 +01:00