Message ID | 20240507053421.456439-1-lizhijian@fujitsu.com |
---|---|
State | Accepted |
Commit | 49ba7b515c4c0719b866d16f068e62d16a8a3dd1 |
Headers | show |
Series | [v2] cxl/region: Fix memregion leaks in devm_cxl_add_region() | expand |
ping On 07/05/2024 13:34, Li Zhijian wrote: > Move the mode verification to __create_region() before allocating the > memregion to avoid the memregion leaks. > > Fixes: 6e099264185d ("cxl/region: Add volatile region creation support") > Signed-off-by: Li Zhijian <lizhijian@fujitsu.com> > --- > V2: Move the mode verification to __create_region() # Dan > --- > drivers/cxl/core/region.c | 18 +++++++++--------- > 1 file changed, 9 insertions(+), 9 deletions(-) > > diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c > index 812b2948b6c6..18b95149640b 100644 > --- a/drivers/cxl/core/region.c > +++ b/drivers/cxl/core/region.c > @@ -2352,15 +2352,6 @@ static struct cxl_region *devm_cxl_add_region(struct cxl_root_decoder *cxlrd, > struct device *dev; > int rc; > > - switch (mode) { > - case CXL_DECODER_RAM: > - case CXL_DECODER_PMEM: > - break; > - default: > - dev_err(&cxlrd->cxlsd.cxld.dev, "unsupported mode %d\n", mode); > - return ERR_PTR(-EINVAL); > - } > - > cxlr = cxl_region_alloc(cxlrd, id); > if (IS_ERR(cxlr)) > return cxlr; > @@ -2415,6 +2406,15 @@ static struct cxl_region *__create_region(struct cxl_root_decoder *cxlrd, > { > int rc; > > + switch (mode) { > + case CXL_DECODER_RAM: > + case CXL_DECODER_PMEM: > + break; > + default: > + dev_err(&cxlrd->cxlsd.cxld.dev, "unsupported mode %d\n", mode); > + return ERR_PTR(-EINVAL); > + } > + > rc = memregion_alloc(GFP_KERNEL); > if (rc < 0) > return ERR_PTR(rc);
Li Zhijian wrote: > Move the mode verification to __create_region() before allocating the > memregion to avoid the memregion leaks. > > Fixes: 6e099264185d ("cxl/region: Add volatile region creation support") > Signed-off-by: Li Zhijian <lizhijian@fujitsu.com> > --- > V2: Move the mode verification to __create_region() # Dan > --- > drivers/cxl/core/region.c | 18 +++++++++--------- > 1 file changed, 9 insertions(+), 9 deletions(-) LGTM Reviewed-by: Dan Williams <dan.j.williams@intel.com>
diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c index 812b2948b6c6..18b95149640b 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -2352,15 +2352,6 @@ static struct cxl_region *devm_cxl_add_region(struct cxl_root_decoder *cxlrd, struct device *dev; int rc; - switch (mode) { - case CXL_DECODER_RAM: - case CXL_DECODER_PMEM: - break; - default: - dev_err(&cxlrd->cxlsd.cxld.dev, "unsupported mode %d\n", mode); - return ERR_PTR(-EINVAL); - } - cxlr = cxl_region_alloc(cxlrd, id); if (IS_ERR(cxlr)) return cxlr; @@ -2415,6 +2406,15 @@ static struct cxl_region *__create_region(struct cxl_root_decoder *cxlrd, { int rc; + switch (mode) { + case CXL_DECODER_RAM: + case CXL_DECODER_PMEM: + break; + default: + dev_err(&cxlrd->cxlsd.cxld.dev, "unsupported mode %d\n", mode); + return ERR_PTR(-EINVAL); + } + rc = memregion_alloc(GFP_KERNEL); if (rc < 0) return ERR_PTR(rc);
Move the mode verification to __create_region() before allocating the memregion to avoid the memregion leaks. Fixes: 6e099264185d ("cxl/region: Add volatile region creation support") Signed-off-by: Li Zhijian <lizhijian@fujitsu.com> --- V2: Move the mode verification to __create_region() # Dan --- drivers/cxl/core/region.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)