summaryrefslogtreecommitdiffstats
path: root/sound/usb/pcm.c
diff options
context:
space:
mode:
authorClemens Ladisch <clemens@ladisch.de>2012-05-18 18:00:43 +0200
committerTakashi Iwai <tiwai@suse.de>2012-05-31 10:25:44 +0200
commit5cd5d7c44990658df6ab49f6253c39617c53b03d (patch)
tree88c36facfd9b20e8afbbe087abea5bde2e65e61e /sound/usb/pcm.c
parentadcc70b249ca77c1197eb62b1645146721ba6e5b (diff)
downloadlinux-5cd5d7c44990658df6ab49f6253c39617c53b03d.tar.bz2
ALSA: usb-audio: fix rate_list memory leak
The array of sample rates is reallocated every time when opening the PCM device, but was freed only once when unplugging the device. Reported-by: "Alexander E. Patrakov" <patrakov@gmail.com> Cc: <stable@vger.kernel.org> Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/usb/pcm.c')
-rw-r--r--sound/usb/pcm.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c
index 24839d932648..cdf8b7601973 100644
--- a/sound/usb/pcm.c
+++ b/sound/usb/pcm.c
@@ -788,6 +788,9 @@ static int snd_usb_pcm_check_knot(struct snd_pcm_runtime *runtime,
int count = 0, needs_knot = 0;
int err;
+ kfree(subs->rate_list.list);
+ subs->rate_list.list = NULL;
+
list_for_each_entry(fp, &subs->fmt_list, list) {
if (fp->rates & SNDRV_PCM_RATE_CONTINUOUS)
return 0;