Re: [PATCH 6/7] cxl/pci: Check memdev driver binding status in cxl_reset_done()
From: Dave Jiang
Date: Tue Mar 10 2026 - 16:50:37 EST
On 3/10/26 8:57 AM, Li Ming wrote:
> 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: 934edcd436dc ("cxl: Add post-reset warning if reset results in loss of previously committed HDM decoders")
> Signed-off-by: Li Ming <ming.li@xxxxxxxxxxxx>
Reviewed-by: Dave Jiang <dave.jiang@xxxxxxxxx>
> ---
> drivers/cxl/pci.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/cxl/pci.c b/drivers/cxl/pci.c
> index fbb300a01830..a5922116db2a 100644
> --- a/drivers/cxl/pci.c
> +++ b/drivers/cxl/pci.c
> @@ -1043,6 +1043,9 @@ static void cxl_reset_done(struct pci_dev *pdev)
> * that no longer exists.
> */
> guard(device)(&cxlmd->dev);
> + if (!cxlmd->dev.driver)
> + return;
> +
> if (cxlmd->endpoint &&
> cxl_endpoint_decoder_reset_detected(cxlmd->endpoint)) {
> dev_crit(dev, "SBR happened without memory regions removal.\n");
>