Message ID | 20250217144828.30651-7-ming.li@zohomail.com |
---|---|
State | New |
Headers | show |
Series | Use guard() instead of rwsem locking | expand |
On 2/17/25 7:48 AM, Li Ming wrote: > 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> > Signed-off-by: Li Ming <ming.li@zohomail.com> Reviewed-by: Dave Jiang <dave.jiang@intel.com> > --- > drivers/cxl/core/region.c | 16 +++++----------- > 1 file 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; > }
On Mon, Feb 17, 2025 at 10:48:27PM +0800, Li Ming wrote: > 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> > Signed-off-by: Li Ming <ming.li@zohomail.com> Reviewed-by: Alison Schofield <alison.schofield@intel.com> snip
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; }