diff options
author | Vishal Verma <vishal.l.verma@intel.com> | 2022-11-01 01:41:00 -0600 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2022-11-01 15:33:07 -0700 |
commit | 71ee71d7adcba648077997a29a91158d20c40b09 (patch) | |
tree | 72fcf55fcadc94e4cc88efe8273fc5fd96afce49 /lib/mpi/mpi-sub-ui.c | |
parent | 24f0692bfd41fd207d99c993a5785c3426762046 (diff) |
cxl/region: Fix decoder allocation crash
When an intermediate port's decoders have been exhausted by existing
regions, and creating a new region with the port in question in it's
hierarchical path is attempted, cxl_port_attach_region() fails to find a
port decoder (as would be expected), and drops into the failure / cleanup
path.
However, during cleanup of the region reference, a sanity check attempts
to dereference the decoder, which in the above case didn't exist. This
causes a NULL pointer dereference BUG.
To fix this, refactor the decoder allocation and de-allocation into
helper routines, and in this 'free' routine, check that the decoder,
@cxld, is valid before attempting any operations on it.
Cc: <stable@vger.kernel.org>
Suggested-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Fixes: 384e624bb211 ("cxl/region: Attach endpoint decoders")
Link: https://lore.kernel.org/r/20221101074100.1732003-1-vishal.l.verma@intel.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'lib/mpi/mpi-sub-ui.c')
0 files changed, 0 insertions, 0 deletions