]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 20 Mar 2014 18:26:31 +0000 (11:26 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 20 Mar 2014 18:26:31 +0000 (11:26 -0700)
added patches:
asoc-pcm-free-path-list-before-exiting-from-error-conditions.patch

queue-3.10/asoc-pcm-free-path-list-before-exiting-from-error-conditions.patch [new file with mode: 0644]
queue-3.10/series

diff --git a/queue-3.10/asoc-pcm-free-path-list-before-exiting-from-error-conditions.patch b/queue-3.10/asoc-pcm-free-path-list-before-exiting-from-error-conditions.patch
new file mode 100644 (file)
index 0000000..af1aa16
--- /dev/null
@@ -0,0 +1,48 @@
+From e4ad1accb28d0ed8cea6f12395d58686ad344ca7 Mon Sep 17 00:00:00 2001
+From: Patrick Lai <plai@codeaurora.org>
+Date: Sun, 2 Mar 2014 11:52:57 -0800
+Subject: ASoC: pcm: free path list before exiting from error conditions
+
+From: Patrick Lai <plai@codeaurora.org>
+
+commit e4ad1accb28d0ed8cea6f12395d58686ad344ca7 upstream.
+
+dpcm_path_get() allocates dynamic memory to hold path list.
+Corresponding dpcm_path_put() must be called to free the memory.
+dpcm_path_put() is not called under several error conditions.
+This leads to memory leak.
+
+Signed-off-by: Patrick Lai <plai@codeaurora.org>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/soc-pcm.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/sound/soc/soc-pcm.c
++++ b/sound/soc/soc-pcm.c
+@@ -1864,6 +1864,7 @@ int soc_dpcm_runtime_update(struct snd_s
+               paths = dpcm_path_get(fe, SNDRV_PCM_STREAM_PLAYBACK, &list);
+               if (paths < 0) {
++                      dpcm_path_put(&list);
+                       dev_warn(fe->dev, "ASoC: %s no valid %s path\n",
+                                       fe->dai_link->name,  "playback");
+                       mutex_unlock(&card->mutex);
+@@ -1893,6 +1894,7 @@ capture:
+               paths = dpcm_path_get(fe, SNDRV_PCM_STREAM_CAPTURE, &list);
+               if (paths < 0) {
++                      dpcm_path_put(&list);
+                       dev_warn(fe->dev, "ASoC: %s no valid %s path\n",
+                                       fe->dai_link->name,  "capture");
+                       mutex_unlock(&card->mutex);
+@@ -1957,6 +1959,7 @@ static int dpcm_fe_dai_open(struct snd_p
+       fe->dpcm[stream].runtime = fe_substream->runtime;
+       if (dpcm_path_get(fe, stream, &list) <= 0) {
++              dpcm_path_put(&list);
+               dev_dbg(fe->dev, "ASoC: %s no valid %s route\n",
+                       fe->dai_link->name, stream ? "capture" : "playback");
+       }
index 836f3a60cafdde4fb913a3542afcba6e372b89a4..b75f257e4bd1fd7bccbbaeae685b5723c71fd194 100644 (file)
@@ -53,3 +53,4 @@ acpi-sleep-add-extra-checks-for-hw-reduced-acpi-mode-sleep-states.patch
 iscsi-target-fix-iscsit_get_tpg_from_np-tpg_state-bug.patch
 fs-proc-base.c-fix-gpf-in-proc-pid-map_files.patch
 drm-radeon-atom-select-the-proper-number-of-lanes-in.patch
+asoc-pcm-free-path-list-before-exiting-from-error-conditions.patch