Linux CXL
 help / color / mirror / Atom feed
* [PATCH] cxl/hdm: Avoid NULL deref when component registers are missing
@ 2023-03-29 21:35 Dan Williams
  2023-03-29 23:59 ` Dave Jiang
  2023-03-30 17:19 ` Jonathan Cameron
  0 siblings, 2 replies; 7+ messages in thread
From: Dan Williams @ 2023-03-29 21:35 UTC (permalink / raw)
  To: linux-cxl; +Cc: Dave Jiang

The cxl_port driver attempts to support endpoint devices that do not
advertise a component register block, but by inspection
devm_cxl_setup_hdm() passes a NULL @crb to helper functions that should
be skipped.

Return early and skip setting target_count since that is only relevant
for switch decoders, not endpoint decoders.

Fixes: 757f6448b100 ("cxl/hdm: Fix double allocation of @cxlhdm")
Tested-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
---
 drivers/cxl/core/hdm.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/cxl/core/hdm.c b/drivers/cxl/core/hdm.c
index 5293fe13fce3..cc123996b1a4 100644
--- a/drivers/cxl/core/hdm.c
+++ b/drivers/cxl/core/hdm.c
@@ -123,7 +123,7 @@ struct cxl_hdm *devm_cxl_setup_hdm(struct cxl_port *port,
 	crb = ioremap(port->component_reg_phys, CXL_COMPONENT_REG_BLOCK_SIZE);
 	if (!crb && info && info->mem_enabled) {
 		cxlhdm->decoder_count = info->ranges;
-		cxlhdm->target_count = info->ranges;
+		return cxlhdm;
 	} else if (!crb) {
 		dev_err(dev, "No component registers mapped\n");
 		return ERR_PTR(-ENXIO);


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2023-03-30 19:04 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-29 21:35 [PATCH] cxl/hdm: Avoid NULL deref when component registers are missing Dan Williams
2023-03-29 23:59 ` Dave Jiang
2023-03-30 17:19 ` Jonathan Cameron
2023-03-30 18:19   ` Dan Williams
2023-03-30 18:27     ` Jonathan Cameron
2023-03-30 18:49       ` Dan Williams
2023-03-30 19:04         ` Jonathan Cameron

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox