Skip to content

Commit e8069c6

Browse files
liming011davejiang
authored andcommitted
cxl/pci: Check memdev driver binding status in cxl_reset_done()
cxl_reset_done() accesses the endpoint of the corresponding CXL memdev without endpoint validity checking. By default, cxlmd->endpoint is initialized to -ENXIO, if cxl_reset_done() is triggered after the corresponding CXL memdev probing failed, this results in access to an invalid endpoint. CXL subsystem can always check CXL memdev driver binding status to confirm its endpoint validity. So adding the CXL memdev driver checking inside cxl_reset_done() to avoid accessing an invalid endpoint. Fixes: 934edcd ("cxl: Add post-reset warning if reset results in loss of previously committed HDM decoders") Reviewed-by: Dan Williams <dan.j.williams@intel.com> Reviewed-by: Dave Jiang <dave.jiang@intel.com> Signed-off-by: Li Ming <ming.li@zohomail.com> Link: https://patch.msgid.link/20260314-fix_access_endpoint_without_drv_check-v2-4-4c09edf2e1db@zohomail.com Signed-off-by: Dave Jiang <dave.jiang@intel.com>
1 parent dc372e5 commit e8069c6

1 file changed

Lines changed: 3 additions & 0 deletions

File tree

drivers/cxl/pci.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,6 +1043,9 @@ static void cxl_reset_done(struct pci_dev *pdev)
10431043
* that no longer exists.
10441044
*/
10451045
guard(device)(&cxlmd->dev);
1046+
if (!cxlmd->dev.driver)
1047+
return;
1048+
10461049
if (cxlmd->endpoint &&
10471050
cxl_endpoint_decoder_reset_detected(cxlmd->endpoint)) {
10481051
dev_crit(dev, "SBR happened without memory regions removal.\n");

0 commit comments

Comments
 (0)