Home Home > GIT Browse > stable
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiri Slaby <jslaby@suse.cz>2019-08-16 22:01:45 +0200
committerJiri Slaby <jslaby@suse.cz>2019-08-16 22:25:11 +0200
commit6b7b9dddd0bfc710cf2813494df3ebda5c4f534a (patch)
tree6a581490eefdb404421e6fb3d55012d4d0d55616
parent48c9dd81b6d0f3c75477ee7fe9287164a7b9cf8d (diff)
ALSA: hiface: fix multiple memory leak bugs (bnc#1012628).
-rw-r--r--patches.kernel.org/5.2.9-127-ALSA-hiface-fix-multiple-memory-leak-bugs.patch63
-rw-r--r--series.conf1
2 files changed, 64 insertions, 0 deletions
diff --git a/patches.kernel.org/5.2.9-127-ALSA-hiface-fix-multiple-memory-leak-bugs.patch b/patches.kernel.org/5.2.9-127-ALSA-hiface-fix-multiple-memory-leak-bugs.patch
new file mode 100644
index 0000000000..3407fe19ed
--- /dev/null
+++ b/patches.kernel.org/5.2.9-127-ALSA-hiface-fix-multiple-memory-leak-bugs.patch
@@ -0,0 +1,63 @@
+From: Wenwen Wang <wenwen@cs.uga.edu>
+Date: Wed, 7 Aug 2019 04:08:51 -0500
+Subject: [PATCH] ALSA: hiface: fix multiple memory leak bugs
+References: bnc#1012628
+Patch-mainline: 5.2.9
+Git-commit: 3d92aa45fbfd7319e3a19f4ec59fd32b3862b723
+
+commit 3d92aa45fbfd7319e3a19f4ec59fd32b3862b723 upstream.
+
+In hiface_pcm_init(), 'rt' is firstly allocated through kzalloc(). Later
+on, hiface_pcm_init_urb() is invoked to initialize 'rt->out_urbs[i]'. In
+hiface_pcm_init_urb(), 'rt->out_urbs[i].buffer' is allocated through
+kzalloc(). However, if hiface_pcm_init_urb() fails, both 'rt' and
+'rt->out_urbs[i].buffer' are not deallocated, leading to memory leak bugs.
+Also, 'rt->out_urbs[i].buffer' is not deallocated if snd_pcm_new() fails.
+
+To fix the above issues, free 'rt' and 'rt->out_urbs[i].buffer'.
+
+Fixes: a91c3fb2f842 ("Add M2Tech hiFace USB-SPDIF driver")
+Signed-off-by: Wenwen Wang <wenwen@cs.uga.edu>
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ sound/usb/hiface/pcm.c | 11 ++++++++---
+ 1 file changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/sound/usb/hiface/pcm.c b/sound/usb/hiface/pcm.c
+index 14fc1e1d5d13..c406497c5919 100644
+--- a/sound/usb/hiface/pcm.c
++++ b/sound/usb/hiface/pcm.c
+@@ -600,14 +600,13 @@ int hiface_pcm_init(struct hiface_chip *chip, u8 extra_freq)
+ ret = hiface_pcm_init_urb(&rt->out_urbs[i], chip, OUT_EP,
+ hiface_pcm_out_urb_handler);
+ if (ret < 0)
+- return ret;
++ goto error;
+ }
+
+ ret = snd_pcm_new(chip->card, "USB-SPDIF Audio", 0, 1, 0, &pcm);
+ if (ret < 0) {
+- kfree(rt);
+ dev_err(&chip->dev->dev, "Cannot create pcm instance\n");
+- return ret;
++ goto error;
+ }
+
+ pcm->private_data = rt;
+@@ -620,4 +619,10 @@ int hiface_pcm_init(struct hiface_chip *chip, u8 extra_freq)
+
+ chip->pcm = rt;
+ return 0;
++
++error:
++ for (i = 0; i < PCM_N_URBS; i++)
++ kfree(rt->out_urbs[i].buffer);
++ kfree(rt);
++ return ret;
+ }
+--
+2.22.0
+
diff --git a/series.conf b/series.conf
index ff30fa73b7..98015f938a 100644
--- a/series.conf
+++ b/series.conf
@@ -1147,6 +1147,7 @@
patches.kernel.org/5.2.9-124-hwmon-lm75-Fixup-tmp75b-clr_mask.patch
patches.kernel.org/5.2.9-125-drm-i915-Fix-wrong-escape-clock-divisor-init-fo.patch
patches.kernel.org/5.2.9-126-ALSA-firewire-fix-a-memory-leak-bug.patch
+ patches.kernel.org/5.2.9-127-ALSA-hiface-fix-multiple-memory-leak-bugs.patch
########################################################
# Build fixes that apply to the vanilla kernel too.