]> git.baikalelectronics.ru Git - kernel.git/commit
cxl/region: Fix null pointer dereference due to pass through decoder commit
authorJonathan Cameron <Jonathan.Cameron@huawei.com>
Thu, 18 Aug 2022 16:42:10 +0000 (17:42 +0100)
committerDan Williams <dan.j.williams@intel.com>
Thu, 20 Oct 2022 23:28:53 +0000 (16:28 -0700)
commit2816e24b0510e0c185c0c46acff1ce7aa4c4443f
treea9778e38a4b69218064b1e9e7b5ec830e56e74a6
parentcf00b33058b196b4db928419dde68993b15a975b
cxl/region: Fix null pointer dereference due to pass through decoder commit

Not all decoders have a commit callback.

The CXL specification allows a host bridge with a single root port to
have no explicit HDM decoders. Currently the region driver assumes there
are none.  As such the CXL core creates a special pass through decoder
instance without a commit callback.

Prior to this patch, the ->commit() callback was called unconditionally.
Thus a configuration with 1 Host Bridge, 1 Root Port, 1 switch with
multiple downstream ports below which there are multiple CXL type 3
devices results in a situation where committing the region causes a null
pointer dereference.

Reported-by: Bobo WL <lmw.bobo@gmail.com>
Fixes: 176baefb2eb5 ("cxl/hdm: Commit decoder state to hardware")
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: Vishal Verma <vishal.l.verma@intel.com>
Link: https://lore.kernel.org/r/20220818164210.2084-1-Jonathan.Cameron@huawei.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/cxl/core/region.c