[PATCH v3 2/2] cxl/region: Use __free(put_device) in find_pos_and_ways()
Alison Schofield <[email protected]> Fri, 24 Jul 2026 15:28:02 -0700
| Newsgroups | org.kernel.vger.linux-cxl |
|---|---|
| Message-ID | <550db1771b3d30277988d3e575f1a6893a26b0ae.1784931354.git.alison.schofield@intel.com> |
Use __free(put_device) for the switch decoder reference returned by device_find_child() instead of releasing it with an open-coded put_device(). This matches the scoped device reference handling used elsewhere in the file. Suggested-by: Li Ming <[email protected]> Reviewed-by: Li Ming <[email protected]> Signed-off-by: Alison Schofield <[email protected]> --- Changes in v3: - Declare and assign dev in one statement per cleanup.h (Jonathan) Changes in v2: - New patch drivers/cxl/core/region.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c index 6d902e1c4161..904e80e89206 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -1913,15 +1913,14 @@ static int find_pos_and_ways(struct cxl_port *port, struct range *range, { struct cxl_switch_decoder *cxlsd; struct cxl_port *parent; - struct device *dev; int rc = -ENXIO; parent = parent_port_of(port); if (!parent) return rc; - dev = device_find_child(&parent->dev, range, - match_switch_decoder_by_range); + struct device *dev __free(put_device) = + device_find_child(&parent->dev, range, match_switch_decoder_by_range); if (!dev) { dev_err(port->uport_dev, "failed to find decoder mapping %#llx-%#llx\n", @@ -1944,8 +1943,6 @@ static int find_pos_and_ways(struct cxl_port *port, struct range *range, dev_name(&port->dev), dev_name(port->parent_dport->dport_dev), dev_name(dev)); - put_device(dev); - return rc; } -- 2.37.3