twx-linux/drivers/edac
Qiuxu Zhuo 88efa0de32 EDAC/igen6: Fix NULL pointer dereference
A kernel panic was reported with the following kernel log:

  EDAC igen6: Expected 2 mcs, but only 1 detected.
  BUG: unable to handle page fault for address: 000000000000d570
  ...
  Hardware name: Notebook V54x_6x_TU/V54x_6x_TU, BIOS Dasharo (coreboot+UEFI) v0.9.0 07/17/2024
  RIP: e030:ecclog_handler+0x7e/0xf0 [igen6_edac]
  ...
  igen6_probe+0x2a0/0x343 [igen6_edac]
  ...
  igen6_init+0xc5/0xff0 [igen6_edac]
  ...

This issue occurred because one memory controller was disabled by
the BIOS but the igen6_edac driver still checked all the memory
controllers, including this absent one, to identify the source of
the error. Accessing the null MMIO for the absent memory controller
resulted in the oops above.

Fix this issue by reverting the configuration structure to non-const
and updating the field 'res_cfg->num_imc' to reflect the number of
detected memory controllers.

Fixes: 20e190b1c1fd ("EDAC/igen6: Skip absent memory controllers")
Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Closes: https://lore.kernel.org/all/aFFN7RlXkaK_loQb@mail-itl/
Suggested-by: Borislav Petkov <bp@alien8.de>
Signed-off-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Tested-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Link: https://lore.kernel.org/r/20250618162307.1523736-1-qiuxu.zhuo@intel.com
2025-06-18 20:19:45 +02:00
..
al_mc_edac.c EDAC/al_mc: Make use of the helper function devm_add_action_or_reset() 2021-09-28 18:35:11 +02:00
altera_edac.c EDAC/altera: Use correct write width with the INTTEST register 2025-05-29 17:38:55 +02:00
altera_edac.h EDAC/altera: Set DDR and SDMMC interrupt mask before registration 2025-04-28 12:38:53 +02:00
amd64_edac.c EDAC/amd64: Correct number of UMCs for family 19h models 70h-7fh 2025-06-16 23:11:14 +02:00
amd64_edac.h EDAC/amd64: Remove unused register accesses 2024-06-12 11:33:45 +02:00
amd76x_edac.c
armada_xp_edac.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
aspeed_edac.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
bluefield_edac.c EDAC/bluefield: Don't use bluefield_edac_readl() result on error 2025-05-22 17:58:28 +02:00
cpc925_edac.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
debugfs.c EDAC: Use string choice helper functions 2025-02-25 22:19:55 +01:00
dmc520_edac.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
e7xxx_edac.c EDAC: Sanitize MODULE_AUTHOR strings 2023-03-28 15:43:30 +02:00
e752x_edac.c EDAC: Sanitize MODULE_AUTHOR strings 2023-03-28 15:43:30 +02:00
ecs.c EDAC: Add a Error Check Scrub control feature 2025-02-25 15:42:32 +01:00
edac_device_sysfs.c EDAC/device: Remove edac_dev_sysfs_block_attribute::store() 2024-03-27 18:26:57 +01:00
edac_device.c EDAC/device: Fix dev_set_name() format string 2025-03-05 23:35:01 +01:00
edac_device.h EDAC: Remove unused struct members 2024-03-27 18:26:58 +01:00
edac_mc_sysfs.c EDAC: Fix typos in comments 2024-12-15 22:17:34 +01:00
edac_mc.c EDAC: Fix typos in comments 2024-12-15 22:17:34 +01:00
edac_mc.h
edac_module.c EDAC: constantify the struct bus_type usage 2024-01-04 14:34:27 +01:00
edac_module.h EDAC/device: Fix period calculation in edac_device_reset_delay_period() 2022-12-30 15:51:41 +01:00
edac_pci_sysfs.c Driver core changes for 6.8-rc1 2024-01-18 09:48:40 -08:00
edac_pci.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_56.RULE (part 2) 2022-06-10 14:51:35 +02:00
edac_pci.h EDAC: Remove unused struct members 2024-03-27 18:26:58 +01:00
fsl_ddr_edac.c EDAC/fsl_ddr: Add support for i.MX9 DDR controller 2024-10-23 16:53:55 +02:00
fsl_ddr_edac.h EDAC/fsl_ddr: Add support for i.MX9 DDR controller 2024-10-23 16:53:55 +02:00
ghes_edac.c EDAC/ghes: Add missing newline to pr_info() statement 2024-05-28 16:13:09 +02:00
highbank_l2_edac.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
highbank_mc_edac.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
i7core_edac.c EDAC/{sb,i7core}_edac: Do not use a plain integer for a NULL pointer 2023-11-28 15:43:43 +01:00
i10nm_base.c EDAC/i10nm: Fix the bitwise operation between variables of different sizes 2025-04-24 08:42:25 -07:00
i3000_edac.c
i3200_edac.c
i5000_edac.c EDAC: Fix typos in comments 2024-12-15 22:17:34 +01:00
i5100_edac.c EDAC: Sanitize MODULE_AUTHOR strings 2023-03-28 15:43:30 +02:00
i5400_edac.c EDAC: Use string choice helper functions 2025-02-25 22:19:55 +01:00
i7300_edac.c EDAC: Use string choice helper functions 2025-02-25 22:19:55 +01:00
i82443bxgx_edac.c
i82860_edac.c EDAC: Sanitize MODULE_AUTHOR strings 2023-03-28 15:43:30 +02:00
i82875p_edac.c
i82975x_edac.c
ie31200_edac.c - ie31200: Add support for Raptor Lake-S and Alder Lake-S compute dies 2025-05-27 10:13:06 -07:00
igen6_edac.c EDAC/igen6: Fix NULL pointer dereference 2025-06-18 20:19:45 +02:00
Kconfig Merge remote-tracking branches 'ras/edac-cxl', 'ras/edac-drivers' and 'ras/edac-misc' into edac-updates 2025-03-25 14:53:27 +01:00
layerscape_edac.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
loongson_edac.c EDAC: Add an EDAC driver for the Loongson memory controller 2025-01-04 12:02:04 +01:00
Makefile EDAC: Add a memory repair control feature 2025-02-26 11:13:23 +01:00
mce_amd.c x86/msr: Add explicit includes of <asm/msr.h> 2025-05-02 10:23:47 +02:00
mce_amd.h
mem_repair.c cxl/edac: Add CXL memory device memory sparing control feature 2025-05-23 13:24:53 -07:00
mpc85xx_edac.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
mpc85xx_edac.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_56.RULE (part 2) 2022-06-10 14:51:35 +02:00
npcm_edac.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
octeon_edac-l2c.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
octeon_edac-lmc.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
octeon_edac-pc.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
octeon_edac-pci.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
pasemi_edac.c
pnd2_edac.c EDAC/pnd2: Make read-only const array intlv static 2025-03-03 16:39:26 +01:00
pnd2_edac.h
qcom_edac.c EDAC/qcom: Correct interrupt enable register configuration 2025-02-14 20:36:11 +01:00
r82600_edac.c EDAC: Sanitize MODULE_AUTHOR strings 2023-03-28 15:43:30 +02:00
sb_edac.c EDAC/sb_edac: Fix the compile warning of large frame size 2024-09-03 15:09:22 -07:00
scrub.c EDAC: Add scrub control feature 2025-02-25 15:39:09 +01:00
sifive_edac.c EDAC: Remove dynamic attributes from edac_device_alloc_ctl_info() 2024-03-27 18:26:58 +01:00
skx_base.c - Remove the less generic CPU matching infra around struct x86_cpu_desc and 2025-01-21 09:30:59 -08:00
skx_common.c EDAC/skx_common: Fix general protection fault 2025-04-17 10:19:02 -07:00
skx_common.h EDAC/{skx_common,i10nm}: Add RRL support for Intel Granite Rapids server 2025-04-17 10:45:21 -07:00
synopsys_edac.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
thunderx_edac.c EDAC/thunderx: Remove unused struct error_syndrome 2024-05-27 14:42:04 +02:00
ti_edac.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
versal_edac.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
wq.c EDAC/wq: Remove unneeded flush_workqueue() 2022-08-25 10:50:35 +02:00
x38_edac.c
xgene_edac.c EDAC: Use string choice helper functions 2025-02-25 22:19:55 +01:00
zynqmp_edac.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00