mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
cxl/region: Guard against a missing peer mapping
When two endpoints share a dport, both must be mapped by the port. sashiko-bot reports that a missing peer mapping could result in a NULL pointer dereference during region creation. No caller can reach this today. Guard it anyway so a future violation of the mapping requirement fails region creation rather than causing an oops. Reported-by: sashiko-bot@kernel.org Link: https://sashiko.dev/#/patchset/cover.1787255388.git.alison.schofield%40intel.com?part=3 Assisted-by: Claude:claude-opus-5 Signed-off-by: Alison Schofield <alison.schofield@intel.com> Reviewed-by: Richard Cheng <icheng@nvidia.com> Reviewed-by: Dave Jiang <dave.jiang@intel.com> Link: https://patch.msgid.link/20260821222515.2675707-1-alison.schofield@intel.com Signed-off-by: Dave Jiang <dave.jiang@intel.com>
This commit is contained in:
parent
cee9395acd
commit
b212e37113
|
|
@ -1367,7 +1367,8 @@ static int check_last_peer(struct cxl_endpoint_decoder *cxled,
|
|||
/*
|
||||
* If this position wants to share a dport with the last endpoint mapped
|
||||
* then that endpoint, at index 'position - distance', must also be
|
||||
* mapped by this dport.
|
||||
* mapped by this dport. An endpoint that this port does not map at all
|
||||
* fails that requirement.
|
||||
*/
|
||||
if (pos < distance) {
|
||||
dev_dbg(&cxlr->dev, "%s:%s: cannot host %s:%s at %d\n",
|
||||
|
|
@ -1378,7 +1379,7 @@ static int check_last_peer(struct cxl_endpoint_decoder *cxled,
|
|||
cxled_peer = p->targets[pos - distance];
|
||||
cxlmd_peer = cxled_to_memdev(cxled_peer);
|
||||
ep_peer = cxl_ep_load(port, cxlmd_peer);
|
||||
if (ep->dport != ep_peer->dport) {
|
||||
if (!ep_peer || ep->dport != ep_peer->dport) {
|
||||
dev_dbg(&cxlr->dev,
|
||||
"%s:%s: %s:%s pos %d mismatched peer %s:%s\n",
|
||||
dev_name(port->uport_dev), dev_name(&port->dev),
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user