[PATCH] mux: core: Replace manual put_device() with __free(put_device)
From: Maxwell Doose
Date: Tue Jun 02 2026 - 00:36:22 EST
The current code for returning on failure in mux_get() uses manual
put_device() calls. Refactor and replace them with a new variable for
the pointer to the underlying device and __free(put_device).
Signed-off-by: Maxwell Doose <m32285159@xxxxxxxxx>
---
drivers/mux/core.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/mux/core.c b/drivers/mux/core.c
index 23538de2c91b..a31e06388588 100644
--- a/drivers/mux/core.c
+++ b/drivers/mux/core.c
@@ -586,13 +586,13 @@ static struct mux_control *mux_get(struct device *dev, const char *mux_name,
if (!mux_chip)
return ERR_PTR(-EPROBE_DEFER);
+ struct device *mux_dev __free(put_device) = &mux_chip->dev;
controller = 0;
if (state) {
if (args.args_count > 2 || args.args_count == 0 ||
(args.args_count < 2 && mux_chip->controllers > 1)) {
dev_err(dev, "%pOF: wrong #mux-state-cells for %pOF\n",
np, args.np);
- put_device(&mux_chip->dev);
return ERR_PTR(-EINVAL);
}
@@ -608,7 +608,6 @@ static struct mux_control *mux_get(struct device *dev, const char *mux_name,
(!args.args_count && mux_chip->controllers > 1)) {
dev_err(dev, "%pOF: wrong #mux-control-cells for %pOF\n",
np, args.np);
- put_device(&mux_chip->dev);
return ERR_PTR(-EINVAL);
}
@@ -619,7 +618,6 @@ static struct mux_control *mux_get(struct device *dev, const char *mux_name,
if (controller >= mux_chip->controllers) {
dev_err(dev, "%pOF: bad mux controller %u specified in %pOF\n",
np, controller, args.np);
- put_device(&mux_chip->dev);
return ERR_PTR(-EINVAL);
}
--
2.54.0