mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [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®