linux/sound
Takashi Iwai e2810d76c5 ALSA: usb-audio: Fix memory leak and corruption in mixer_us16x08.c
There are a few places leaking memory and doing double-free in
mixer_us16x08.c.

The driver allocates a usb_mixer_elem_info object at each
add_new_ctl() call.  This has to be freed via kctl->private_free, but
currently this is done properly only for some controls.

Also, the driver allocates three external objects (comp_store,
eq_store, meter_store), and these are referred in elem->private_data
(it's not kctl->private_data).  And these have to be released, but
there are none doing it.  Moreover, these extra objects have to be
released only once.  Thus the release should be done only by the first
kctl element that refers to it.

For fixing these, we call either snd_usb_mixer_elem_free() (only for
kctl->private_data) or elem_private_free() (for both
kctl->private_data and elem->private_data) via kctl->private_free
appropriately.

Last but not least, snd_us16x08_controls_create() may return in the
middle without releasing the allocated *_store objects due to an
error.  For fixing this, we shuffle the allocation code so that it's
called just before its reference.

Fixes: d2bb390a20 ("ALSA: usb-audio: Tascam US-16x08 DSP mixer quirk")
Reported-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2017-02-22 14:24:09 +01:00
..
aoa powerpc updates for 4.9 2016-10-07 20:19:31 -07:00
arm ALSA: arm: Fix empty menuconfig SND_ARM 2016-08-01 16:07:53 +02:00
atmel
core Merge branch 'for-next' into for-linus 2017-02-20 08:52:50 +01:00
drivers ALSA: drivers: Constify snd_rawmidi_ops 2017-01-12 12:50:06 +01:00
firewire Merge branch 'topic/intel-lpe-audio' into for-next 2017-01-25 22:11:17 +01:00
hda Linux 4.10-rc1 2017-01-24 16:24:18 +00:00
i2c ALSA: ak4114: remove redundant check on err being < 0 2016-07-12 12:28:04 +02:00
isa ALSA: isa: Constify snd_rawmidi_ops 2017-01-12 12:50:16 +01:00
mips ALSA: mips: avoid potential uninitialized variable use 2017-01-16 14:33:42 +01:00
oss sound: oss/ad1848: remove some dead code 2017-01-31 21:41:19 +01:00
parisc
pci Merge branch 'for-next' into for-linus 2017-02-20 08:52:50 +01:00
pcmcia ALSA: vx: Fix possible transfer overflow 2017-01-04 18:01:35 +01:00
ppc powerpc updates for 4.9 2016-10-07 20:19:31 -07:00
sh ktime: Cleanup ktime_set() usage 2016-12-25 17:21:22 +01:00
soc Merge remote-tracking branches 'asoc/topic/wm8753' and 'asoc/topic/zte' into asoc-next 2017-02-19 16:37:07 +00:00
sparc dbri: move dereference after check for NULL 2016-12-06 12:18:22 -05:00
spi ALSA: at73c213: manage SSC clock 2016-01-20 09:59:27 +01:00
synth ALSA: synth: use designated initializers 2016-12-28 16:06:16 +01:00
usb ALSA: usb-audio: Fix memory leak and corruption in mixer_us16x08.c 2017-02-22 14:24:09 +01:00
x86 ALSA: x86: hdmi: select CONFIG_SND_PCM 2017-02-21 23:39:14 +01:00
ac97_bus.c
Kconfig ALSA: add Intel HDMI LPE audio driver for BYT/CHT-T 2017-01-25 14:23:46 +01:00
last.c
Makefile ALSA: add Intel HDMI LPE audio driver for BYT/CHT-T 2017-01-25 14:23:46 +01:00
sound_core.c