[RFC PATCH 3/4] cxl/region: Block region delete for locked regions
From: Dan Williams
Date: Fri Apr 03 2026 - 17:01:19 EST
In support of reducing the number of failure conditions an accelerator
driver needs to consider, block user initiated delete of locked regions.
This might turn out to be too heavy and some region unlock mechanism needs
to be considered, but in the interest of doing something simple to get
accelerators enabled, take this coarse step.
Switch to scope-based cleanup now that there is an early exit case.
Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx>
---
drivers/cxl/core/region.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c
index 600c96be0888..11bc0b88b05f 100644
--- a/drivers/cxl/core/region.c
+++ b/drivers/cxl/core/region.c
@@ -2768,17 +2768,20 @@ static ssize_t delete_region_store(struct device *dev,
{
struct cxl_root_decoder *cxlrd = to_cxl_root_decoder(dev);
struct cxl_port *port = to_cxl_port(dev->parent);
- struct cxl_region *cxlr;
- cxlr = cxl_find_region_by_name(cxlrd, buf);
+ struct cxl_region *cxlr __free(put_cxl_region) =
+ cxl_find_region_by_name(cxlrd, buf);
if (IS_ERR(cxlr))
return PTR_ERR(cxlr);
+ if (test_bit(CXL_REGION_F_LOCK, &cxlr->flags))
+ return -EBUSY;
+
devm_release_action(port->uport_dev, unregister_region, cxlr);
- put_device(&cxlr->dev);
return len;
}
+
DEVICE_ATTR_WO(delete_region);
static void cxl_pmem_region_release(struct device *dev)
--
2.53.0