linux/drivers/edac
Borislav Petkov b560eaa433 EDAC/amd64: Fix PCI component registration
commit 706657b1fe upstream.

In order to setup its PCI component, the driver needs any node private
instance in order to get a reference to the PCI device and hand that
into edac_pci_create_generic_ctl(). For convenience, it uses the 0th
memory controller descriptor under the assumption that if any, the 0th
will be always present.

However, this assumption goes wrong when the 0th node doesn't have
memory and the driver doesn't initialize an instance for it:

  EDAC amd64: F17h detected (node 0).
  ...
  EDAC amd64: Node 0: No DIMMs detected.

But looking up node instances is not really needed - all one needs is
the pointer to the proper device which gets discovered during instance
init.

So stash that pointer into a variable and use it when setting up the
EDAC PCI component.

Clear that variable when the driver needs to unwind due to some
instances failing init to avoid any registration imbalance.

Cc: <stable@vger.kernel.org>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/20201122150815.13808-1-bp@alien8.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-12-30 11:26:10 +01:00
..
altera_edac.c EDAC/altera: Use the proper type for the IRQ status bits 2019-10-05 13:09:38 +02:00
altera_edac.h EDAC, altera: Handle SDRAM Uncorrectable Errors on Stratix10 2018-05-12 12:29:41 +02:00
amd64_edac_dbg.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
amd64_edac_inj.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
amd64_edac.c EDAC/amd64: Fix PCI component registration 2020-12-30 11:26:10 +01:00
amd64_edac.h EDAC/amd64: Add Family 17h Model 30h PCI IDs 2020-06-30 23:17:01 -04:00
amd76x_edac.c EDAC: Get rid of mci->mod_ver 2017-07-17 13:42:48 +02:00
amd8111_edac.c
amd8111_edac.h
amd8131_edac.c
amd8131_edac.h
cell_edac.c
cpc925_edac.c EDAC, cpc925, ppc4xx: Convert to using %pOF instead of full_name 2017-07-19 07:42:41 +02:00
debugfs.c
e7xxx_edac.c EDAC: Get rid of mci->mod_ver 2017-07-17 13:42:48 +02:00
e752x_edac.c EDAC: Get rid of mci->mod_ver 2017-07-17 13:42:48 +02:00
edac_device_sysfs.c EDAC: Fix reference count leaks 2020-08-19 08:14:48 +02:00
edac_device.c
edac_device.h
edac_mc_sysfs.c EDAC: Fix global-out-of-bounds write when setting edac_mc_poll_msec 2019-07-26 09:14:13 +02:00
edac_mc.c EDAC/mc: Fix edac_mc_find() in case no device is found 2020-01-27 14:50:48 +01:00
edac_mc.h EDAC: Add helper which returns the loaded platform driver 2017-09-25 12:55:59 +02:00
edac_module.c treewide: Fix function prototypes for module_param_call() 2017-10-31 15:30:37 +01:00
edac_module.h EDAC: Fix global-out-of-bounds write when setting edac_mc_poll_msec 2019-07-26 09:14:13 +02:00
edac_pci_sysfs.c EDAC: Fix reference count leaks 2020-08-19 08:14:48 +02:00
edac_pci.c
edac_pci.h
fsl_ddr_edac.c
fsl_ddr_edac.h
ghes_edac.c EDAC/ghes: Fix grain calculation 2019-12-31 16:35:58 +01:00
highbank_l2_edac.c
highbank_mc_edac.c EDAC: Get rid of mci->mod_ver 2017-07-17 13:42:48 +02:00
i7core_edac.c EDAC: Correct DIMM capacity unit symbol 2019-11-20 18:47:15 +01:00
i3000_edac.c EDAC: Get rid of mci->mod_ver 2017-07-17 13:42:48 +02:00
i3200_edac.c EDAC: Correct DIMM capacity unit symbol 2019-11-20 18:47:15 +01:00
i5000_edac.c EDAC: Get rid of mci->mod_ver 2017-07-17 13:42:48 +02:00
i5100_edac.c EDAC/i5100: Fix error handling order in i5100_init_one() 2020-10-29 09:55:00 +01:00
i5400_edac.c EDAC: Get rid of mci->mod_ver 2017-07-17 13:42:48 +02:00
i7300_edac.c EDAC: Get rid of mci->mod_ver 2017-07-17 13:42:48 +02:00
i82443bxgx_edac.c EDAC: Get rid of mci->mod_ver 2017-07-17 13:42:48 +02:00
i82860_edac.c EDAC: Get rid of mci->mod_ver 2017-07-17 13:42:48 +02:00
i82875p_edac.c EDAC: Get rid of mci->mod_ver 2017-07-17 13:42:48 +02:00
i82975x_edac.c EDAC: Get rid of mci->mod_ver 2017-07-17 13:42:48 +02:00
ie31200_edac.c EDAC/ie31200: Fallback if host bridge device is already initialized 2020-09-03 11:24:22 +02:00
Kconfig EDAC/mpc85xx: Prevent building as a module 2019-06-15 11:54:03 +02:00
layerscape_edac.c
Makefile edac: remove tile driver 2018-03-26 15:56:17 +02:00
mce_amd.c x86/mce/AMD, EDAC/mce_amd: Enumerate Reserved SMCA bank type 2018-02-21 17:00:54 +01:00
mce_amd.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mpc85xx_edac.c
mpc85xx_edac.h
mv64x60_edac.c EDAC, mv64x60: Fix an error handling path 2018-01-09 20:14:23 +01:00
mv64x60_edac.h
octeon_edac-l2c.c
octeon_edac-lmc.c EDAC, octeon: Fix an uninitialized variable warning 2017-11-27 11:57:26 +01:00
octeon_edac-pc.c
octeon_edac-pci.c
pasemi_edac.c
pnd2_edac.c EDAC, pnd2: Fix ioremap() size in dnv_rd_reg() 2019-10-05 13:09:39 +02:00
pnd2_edac.h
ppc4xx_edac.c EDAC, cpc925, ppc4xx: Convert to using %pOF instead of full_name 2017-07-19 07:42:41 +02:00
ppc4xx_edac.h
r82600_edac.c EDAC: Get rid of mci->mod_ver 2017-07-17 13:42:48 +02:00
sb_edac.c EDAC: Correct DIMM capacity unit symbol 2019-11-20 18:47:15 +01:00
skx_edac.c EDAC: Correct DIMM capacity unit symbol 2019-11-20 18:47:15 +01:00
synopsys_edac.c EDAC: Get rid of mci->mod_ver 2017-07-17 13:42:48 +02:00
thunderx_edac.c EDAC, thunderx: Fix memory leak in thunderx_l2c_threaded_isr() 2019-12-01 09:16:18 +01:00
ti_edac.c EDAC/ti: Fix handling of platform_get_irq() error 2020-10-29 09:55:00 +01:00
wq.c
x38_edac.c EDAC: Get rid of mci->mod_ver 2017-07-17 13:42:48 +02:00
xgene_edac.c EDAC: Get rid of mci->mod_ver 2017-07-17 13:42:48 +02:00