Skip to content

Commit db691d9

Browse files
committed
cxl/region: Fix memregion leaks in devm_cxl_add_region()
jira LE-1907 cve CVE-2024-40936 Rebuild_History Non-Buildable kernel-5.14.0-427.35.1.el9_4 commit-author Li Zhijian <lizhijian@fujitsu.com> commit 49ba7b5 Move the mode verification to __create_region() before allocating the memregion to avoid the memregion leaks. Fixes: 6e09926 ("cxl/region: Add volatile region creation support") Signed-off-by: Li Zhijian <lizhijian@fujitsu.com> Reviewed-by: Dan Williams <dan.j.williams@intel.com> Link: https://lore.kernel.org/r/20240507053421.456439-1-lizhijian@fujitsu.com Signed-off-by: Dave Jiang <dave.jiang@intel.com> (cherry picked from commit 49ba7b5) Signed-off-by: Jonathan Maple <jmaple@ciq.com>
1 parent b2d4541 commit db691d9

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

drivers/cxl/core/region.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2036,15 +2036,6 @@ static struct cxl_region *devm_cxl_add_region(struct cxl_root_decoder *cxlrd,
20362036
struct device *dev;
20372037
int rc;
20382038

2039-
switch (mode) {
2040-
case CXL_DECODER_RAM:
2041-
case CXL_DECODER_PMEM:
2042-
break;
2043-
default:
2044-
dev_err(&cxlrd->cxlsd.cxld.dev, "unsupported mode %d\n", mode);
2045-
return ERR_PTR(-EINVAL);
2046-
}
2047-
20482039
cxlr = cxl_region_alloc(cxlrd, id);
20492040
if (IS_ERR(cxlr))
20502041
return cxlr;
@@ -2095,6 +2086,15 @@ static struct cxl_region *__create_region(struct cxl_root_decoder *cxlrd,
20952086
{
20962087
int rc;
20972088

2089+
switch (mode) {
2090+
case CXL_DECODER_RAM:
2091+
case CXL_DECODER_PMEM:
2092+
break;
2093+
default:
2094+
dev_err(&cxlrd->cxlsd.cxld.dev, "unsupported mode %d\n", mode);
2095+
return ERR_PTR(-EINVAL);
2096+
}
2097+
20982098
rc = memregion_alloc(GFP_KERNEL);
20992099
if (rc < 0)
21002100
return ERR_PTR(rc);

0 commit comments

Comments
 (0)