* [PATCH] soundwire: bus: Move irq mapping cleanup into devres
@ 2024-12-05 11:33 Charles Keepax
2024-12-23 9:12 ` Vinod Koul
0 siblings, 1 reply; 2+ messages in thread
From: Charles Keepax @ 2024-12-05 11:33 UTC (permalink / raw)
To: vkoul
Cc: pierre-louis.bossart, sanyog.r.kale, yung-chuan.liao,
peter.ujfalusi, linux-sound, linux-kernel, patches
Currently the IRQ mapping is disposed off in sdw_drv_remove(), however
if the SoundWire device uses devres this can run before the actual device
clean up, potentially clearing the mapping whilst it is still in use.
Make this devres safe by also moving the sdw_irq_dispose_mapping into
devres.
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
---
drivers/soundwire/bus_type.c | 3 ---
drivers/soundwire/irq.c | 12 ++++++++----
drivers/soundwire/irq.h | 5 -----
3 files changed, 8 insertions(+), 12 deletions(-)
diff --git a/drivers/soundwire/bus_type.c b/drivers/soundwire/bus_type.c
index 77dc094075e1..e98d5db81b1c 100644
--- a/drivers/soundwire/bus_type.c
+++ b/drivers/soundwire/bus_type.c
@@ -167,9 +167,6 @@ static int sdw_drv_remove(struct device *dev)
slave->probed = false;
- if (slave->prop.use_domain_irq)
- sdw_irq_dispose_mapping(slave);
-
mutex_unlock(&slave->sdw_dev_lock);
if (drv->remove)
diff --git a/drivers/soundwire/irq.c b/drivers/soundwire/irq.c
index 0c08cebb1235..c237e6d0766b 100644
--- a/drivers/soundwire/irq.c
+++ b/drivers/soundwire/irq.c
@@ -46,14 +46,18 @@ void sdw_irq_delete(struct sdw_bus *bus)
irq_domain_remove(bus->domain);
}
+static void sdw_irq_dispose_mapping(void *data)
+{
+ struct sdw_slave *slave = data;
+
+ irq_dispose_mapping(irq_find_mapping(slave->bus->domain, slave->dev_num));
+}
+
void sdw_irq_create_mapping(struct sdw_slave *slave)
{
slave->irq = irq_create_mapping(slave->bus->domain, slave->dev_num);
if (!slave->irq)
dev_warn(&slave->dev, "Failed to map IRQ\n");
-}
-void sdw_irq_dispose_mapping(struct sdw_slave *slave)
-{
- irq_dispose_mapping(irq_find_mapping(slave->bus->domain, slave->dev_num));
+ devm_add_action_or_reset(&slave->dev, sdw_irq_dispose_mapping, slave);
}
diff --git a/drivers/soundwire/irq.h b/drivers/soundwire/irq.h
index 58a58046d92b..86e2318409da 100644
--- a/drivers/soundwire/irq.h
+++ b/drivers/soundwire/irq.h
@@ -16,7 +16,6 @@ int sdw_irq_create(struct sdw_bus *bus,
struct fwnode_handle *fwnode);
void sdw_irq_delete(struct sdw_bus *bus);
void sdw_irq_create_mapping(struct sdw_slave *slave);
-void sdw_irq_dispose_mapping(struct sdw_slave *slave);
#else /* CONFIG_IRQ_DOMAIN */
@@ -34,10 +33,6 @@ static inline void sdw_irq_create_mapping(struct sdw_slave *slave)
{
}
-static inline void sdw_irq_dispose_mapping(struct sdw_slave *slave)
-{
-}
-
#endif /* CONFIG_IRQ_DOMAIN */
#endif /* __SDW_IRQ_H */
--
2.39.5
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] soundwire: bus: Move irq mapping cleanup into devres
2024-12-05 11:33 [PATCH] soundwire: bus: Move irq mapping cleanup into devres Charles Keepax
@ 2024-12-23 9:12 ` Vinod Koul
0 siblings, 0 replies; 2+ messages in thread
From: Vinod Koul @ 2024-12-23 9:12 UTC (permalink / raw)
To: Charles Keepax
Cc: pierre-louis.bossart, sanyog.r.kale, yung-chuan.liao,
peter.ujfalusi, linux-sound, linux-kernel, patches
On Thu, 05 Dec 2024 11:33:15 +0000, Charles Keepax wrote:
> Currently the IRQ mapping is disposed off in sdw_drv_remove(), however
> if the SoundWire device uses devres this can run before the actual device
> clean up, potentially clearing the mapping whilst it is still in use.
> Make this devres safe by also moving the sdw_irq_dispose_mapping into
> devres.
>
>
> [...]
Applied, thanks!
[1/1] soundwire: bus: Move irq mapping cleanup into devres
commit: a5fef9baa87f8be359a4b3ed11829ebca82e56ad
Best regards,
--
~Vinod
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2024-12-23 9:12 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-12-05 11:33 [PATCH] soundwire: bus: Move irq mapping cleanup into devres Charles Keepax
2024-12-23 9:12 ` Vinod Koul
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®