diff options
author | 2025-02-21 09:24:52 +0800 | |
---|---|---|
committer | 2025-03-14 14:46:32 -0700 | |
commit | 9e7b7ab5af69aaa5cd027656529663407da61e6f (patch) | |
tree | a0da1fd8e77c327efc9a15434f6bc84b5174a1f1 | |
parent | cxl/core: Use guard() to drop goto pattern of cxl_dpa_alloc() (diff) | |
download | wireguard-linux-9e7b7ab5af69aaa5cd027656529663407da61e6f.tar.xz wireguard-linux-9e7b7ab5af69aaa5cd027656529663407da61e6f.zip |
cxl/region: Drop goto pattern in cxl_dax_region_alloc()
In cxl_dax_region_alloc(), there is a goto pattern to release the rwsem
cxl_region_rwsem when the function returns, the down_read() and up_read
can be replaced by a guard(rwsem_read) then the goto pattern can be
removed.
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Reviewed-by: Alison Schofield <alison.schofield@intel.com>
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Acked-by: Davidlohr Bueso <dave@stgolabs.net>
Signed-off-by: Li Ming <ming.li@zohomail.com>
Link: https://patch.msgid.link/20250221012453.126366-7-ming.li@zohomail.com
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
-rw-r--r-- | drivers/cxl/core/region.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c index d8a71f9f9fa5..320a3f218131 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -3038,17 +3038,13 @@ static struct cxl_dax_region *cxl_dax_region_alloc(struct cxl_region *cxlr) struct cxl_dax_region *cxlr_dax; struct device *dev; - down_read(&cxl_region_rwsem); - if (p->state != CXL_CONFIG_COMMIT) { - cxlr_dax = ERR_PTR(-ENXIO); - goto out; - } + guard(rwsem_read)(&cxl_region_rwsem); + if (p->state != CXL_CONFIG_COMMIT) + return ERR_PTR(-ENXIO); cxlr_dax = kzalloc(sizeof(*cxlr_dax), GFP_KERNEL); - if (!cxlr_dax) { - cxlr_dax = ERR_PTR(-ENOMEM); - goto out; - } + if (!cxlr_dax) + return ERR_PTR(-ENOMEM); cxlr_dax->hpa_range.start = p->res->start; cxlr_dax->hpa_range.end = p->res->end; @@ -3061,8 +3057,6 @@ static struct cxl_dax_region *cxl_dax_region_alloc(struct cxl_region *cxlr) dev->parent = &cxlr->dev; dev->bus = &cxl_bus_type; dev->type = &cxl_dax_region_type; -out: - up_read(&cxl_region_rwsem); return cxlr_dax; } |