Skip to content

Commit 49d1063

Browse files
AlisonSchofielddavejiang
authored andcommitted
cxl/acpi: Restore HBIW check before dereferencing platform_data
Commit 4fe516d ("cxl/acpi: Make the XOR calculations available for testing") split xormap handling code to create a reusable helper function but inadvertently dropped the check of HBIW values before dereferencing cxlrd->platform_data. When HBIW is 1 or 3, no xormaps are needed and platform_data may be NULL, leading to a potential NULL pointer dereference. Affects platform configs using XOR Arithmetic with HBIWs of 1 or 3, when performing DPA->HPA address translation for CXL events. Those events would be any of poison ops, general media, or dram. Restore the early return check for HBIW values of 1 and 3 before dereferencing platform_data. Fixes: 4fe516d ("cxl/acpi: Make the XOR calculations available for testing") Signed-off-by: Alison Schofield <alison.schofield@intel.com> Reviewed-by: Dave Jiang <dave.jiang@intel.com> Link: https://patch.msgid.link/20260109194946.431083-1-alison.schofield@intel.com Signed-off-by: Dave Jiang <dave.jiang@intel.com>
1 parent 3e8aaac commit 49d1063

1 file changed

Lines changed: 9 additions & 2 deletions

File tree

drivers/cxl/acpi.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,16 @@ EXPORT_SYMBOL_FOR_MODULES(cxl_do_xormap_calc, "cxl_translate");
7575

7676
static u64 cxl_apply_xor_maps(struct cxl_root_decoder *cxlrd, u64 addr)
7777
{
78-
struct cxl_cxims_data *cximsd = cxlrd->platform_data;
78+
int hbiw = cxlrd->cxlsd.nr_targets;
79+
struct cxl_cxims_data *cximsd;
80+
81+
/* No xormaps for host bridge interleave ways of 1 or 3 */
82+
if (hbiw == 1 || hbiw == 3)
83+
return addr;
84+
85+
cximsd = cxlrd->platform_data;
7986

80-
return cxl_do_xormap_calc(cximsd, addr, cxlrd->cxlsd.nr_targets);
87+
return cxl_do_xormap_calc(cximsd, addr, hbiw);
8188
}
8289

8390
struct cxl_cxims_context {

0 commit comments

Comments
 (0)