From c3fd35e7800ae1f2dd3fa42ade850c948e4b18ea Mon Sep 17 00:00:00 2001 From: mirko Date: Sat, 22 Aug 2009 12:46:12 +0000 Subject: add generic patchset levelled up to 2.6.31-rc6 git-svn-id: svn://svn.openwrt.org/openwrt/trunk@17351 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../780-fix-race-in-snd_soc_jack_add_gpios.patch | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 target/linux/generic-2.6/patches-2.6.31/780-fix-race-in-snd_soc_jack_add_gpios.patch (limited to 'target/linux/generic-2.6/patches-2.6.31/780-fix-race-in-snd_soc_jack_add_gpios.patch') diff --git a/target/linux/generic-2.6/patches-2.6.31/780-fix-race-in-snd_soc_jack_add_gpios.patch b/target/linux/generic-2.6/patches-2.6.31/780-fix-race-in-snd_soc_jack_add_gpios.patch new file mode 100644 index 000000000..b7214b9d6 --- /dev/null +++ b/target/linux/generic-2.6/patches-2.6.31/780-fix-race-in-snd_soc_jack_add_gpios.patch @@ -0,0 +1,33 @@ +commit 5ced436d549d911ce610ea47d85f71fae5bbfce4 +Author: Lars-Peter Clausen +Date: Fri Jul 31 18:26:48 2009 +0200 + + ASoC: jack: Fix race in snd_soc_jack_add_gpios + + 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 + +--- a/sound/soc/soc-jack.c ++++ b/sound/soc/soc-jack.c +@@ -220,6 +220,9 @@ int snd_soc_jack_add_gpios(struct snd_so + 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, +@@ -227,9 +230,6 @@ int snd_soc_jack_add_gpios(struct snd_so + &gpios[i]); + if (ret) + goto err; +- +- INIT_WORK(&gpios[i].work, gpio_work); +- gpios[i].jack = jack; + } + + return 0; -- cgit v1.2.3