Alsa-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ASoC: jack: Fix race in snd_soc_jack_add_gpios
@ 2009-07-31 19:15 Lars-Peter Clausen
  2009-07-31 21:31 ` Mark Brown
  0 siblings, 1 reply; 2+ messages in thread
From: Lars-Peter Clausen @ 2009-07-31 19:15 UTC (permalink / raw)
  To: broonie; +Cc: alsa-devel, Lars-Peter Clausen

The irq can fire as soon as it has been requested, thus all fields accessed
from within the irq handler must be initialized prior to requesting the irq.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
The patch is against alsa-kernel/master but I guess something similar should also
go into 2.6.31.

 sound/soc/soc-jack.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/sound/soc/soc-jack.c b/sound/soc/soc-jack.c
index 4aa7d8f..1d455ab 100644
--- a/sound/soc/soc-jack.c
+++ b/sound/soc/soc-jack.c
@@ -221,6 +221,9 @@ int snd_soc_jack_add_gpios(struct snd_soc_jack *jack, int count,
 		if (ret)
 			goto err;
 
+		INIT_WORK(&gpios[i].work, gpio_work);
+		gpios[i].jack = jack;
+
 		ret = request_irq(gpio_to_irq(gpios[i].gpio),
 				gpio_handler,
 				IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
@@ -234,9 +237,6 @@ int snd_soc_jack_add_gpios(struct snd_soc_jack *jack, int count,
 		gpio_export(gpios[i].gpio, false);
 #endif
 
-		INIT_WORK(&gpios[i].work, gpio_work);
-		gpios[i].jack = jack;
-
 		/* Update initial jack status */
 		snd_soc_jack_gpio_detect(&gpios[i]);
 	}
-- 
1.5.6.5

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2009-07-31 21:31 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-31 19:15 [PATCH] ASoC: jack: Fix race in snd_soc_jack_add_gpios Lars-Peter Clausen
2009-07-31 21:31 ` Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox