From: Richard Fitzgerald <rf@opensource.cirrus.com>
To: vkoul@kernel.org
Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org,
patches@opensource.cirrus.com
Subject: [PATCH] soundwire: bus_type: Use devres to free slave IDA
Date: Mon, 31 Aug 2026 12:29:39 +0100 [thread overview]
Message-ID: <20260831112939.126708-1-rf@opensource.cirrus.com> (raw)
Create a devres cleanup action to call ida_free(). This ensures that it
is freed after anything that is cleaned up by devres and might have been
using the allocated ID. It also avoids mixing devres and manual cleanup
during sdw_bus_probe().
Fixes: aab12022b076f ("soundwire: bus: Add internal slave ID and use for IRQs")
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
---
drivers/soundwire/bus_type.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/drivers/soundwire/bus_type.c b/drivers/soundwire/bus_type.c
index d61a97c5b41ef..fea15107cd9b9 100644
--- a/drivers/soundwire/bus_type.c
+++ b/drivers/soundwire/bus_type.c
@@ -71,6 +71,13 @@ int sdw_slave_uevent(const struct device *dev, struct kobj_uevent_env *env)
return 0;
}
+static void sdw_slave_ida_free(void *data)
+{
+ struct sdw_slave *slave = data;
+
+ ida_free(&slave->bus->slave_ida, slave->index);
+}
+
static int sdw_bus_probe(struct device *dev)
{
struct sdw_slave *slave = dev_to_sdw_dev(dev);
@@ -104,15 +111,16 @@ static int sdw_bus_probe(struct device *dev)
return ret;
}
slave->index = ret;
+ ret = devm_add_action_or_reset(dev, sdw_slave_ida_free, slave);
+ if (ret)
+ return ret;
/* Create IRQ mapping now so the driver can get it in probe() */
sdw_irq_create_mapping(slave);
ret = drv->probe(slave, id);
- if (ret) {
- ida_free(&slave->bus->slave_ida, slave->index);
+ if (ret)
return ret;
- }
mutex_lock(&slave->sdw_dev_lock);
@@ -170,8 +178,6 @@ static void sdw_bus_remove(struct device *dev)
if (drv->remove)
drv->remove(slave);
-
- ida_free(&slave->bus->slave_ida, slave->index);
}
static void sdw_bus_shutdown(struct device *dev)
--
2.47.3
next reply other threads:[~2026-08-31 11:31 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-31 11:29 Richard Fitzgerald [this message]
2026-08-31 11:51 ` [PATCH] soundwire: bus_type: Use devres to free slave IDA Charles Keepax
2026-09-01 17:15 ` Vinod Koul
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260831112939.126708-1-rf@opensource.cirrus.com \
--to=rf@opensource.cirrus.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sound@vger.kernel.org \
--cc=patches@opensource.cirrus.com \
--cc=vkoul@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox