linux/sound/core
Russell King a4461f41b9 ALSA: fix oops in snd_pcm_info() caused by ASoC DPCM
Unable to handle kernel NULL pointer dereference at virtual address 00000008
pgd = d5300000
[00000008] *pgd=0d265831, *pte=00000000, *ppte=00000000
Internal error: Oops: 17 [#1] PREEMPT ARM
CPU: 0 PID: 2295 Comm: vlc Not tainted 3.11.0+ #755
task: dee74800 ti: e213c000 task.ti: e213c000
PC is at snd_pcm_info+0xc8/0xd8
LR is at 0x30232065
pc : [<c031b52c>]    lr : [<30232065>]    psr: a0070013
sp : e213dea8  ip : d81cb0d0  fp : c05f7678
r10: c05f7770  r9 : fffffdfd  r8 : 00000000
r7 : d8a968a8  r6 : d8a96800  r5 : d8a96200  r4 : d81cb000
r3 : 00000000  r2 : d81cb000  r1 : 00000001  r0 : d8a96200
Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: 10c5387d  Table: 15300019  DAC: 00000015
Process vlc (pid: 2295, stack limit = 0xe213c248)
[<c031b52c>] (snd_pcm_info) from [<c031b570>] (snd_pcm_info_user+0x34/0x9c)
[<c031b570>] (snd_pcm_info_user) from [<c03164a4>] (snd_pcm_control_ioctl+0x274/0x280)
[<c03164a4>] (snd_pcm_control_ioctl) from [<c0311458>] (snd_ctl_ioctl+0xc0/0x55c)
[<c0311458>] (snd_ctl_ioctl) from [<c00eca84>] (do_vfs_ioctl+0x80/0x31c)
[<c00eca84>] (do_vfs_ioctl) from [<c00ecd5c>] (SyS_ioctl+0x3c/0x60)
[<c00ecd5c>] (SyS_ioctl) from [<c000e500>] (ret_fast_syscall+0x0/0x48)
Code: e1a00005 e59530dc e3a01001 e1a02004 (e5933008)
---[ end trace cb3d9bdb8dfefb3c ]---

This is provoked when the ASoC front end is open along with its backend,
(which causes the backend to have a runtime assigned to it) and then the
SNDRV_CTL_IOCTL_PCM_INFO is requested for the (visible) backend device.

Resolve this by ensuring that ASoC internal backend devices are not
visible to userspace, just as the commentry for snd_pcm_new_internal()
says it should be.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Acked-by: Mark Brown <broonie@linaro.org>
Cc: <stable@vger.kernel.org> [v3.4+]
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2013-10-31 17:36:47 +01:00
..
oss ALSA: core: fix NULL checking in snd_pcm_plug_slave_size() 2012-11-14 08:03:31 +01:00
seq ALSA: seq-oss: Initialize MIDI clients asynchronously 2013-07-17 09:19:24 +02:00
Kconfig ALSA: core: allow SND_DMAENGINE_PCM use from modules 2013-08-15 18:28:42 +01:00
Makefile ALSA: move dmaengine implementation from ASoC to ALSA core 2013-08-15 11:18:09 +01:00
compress_offload.c ALSA: compress: Make sure we trigger STOP before closing the stream. 2013-09-26 09:28:22 +02:00
control.c ALSA: add/change some comments describing function return values 2013-03-12 08:32:53 +01:00
control_compat.c ALSA: control: add support for ENUMERATED user space controls 2011-10-09 09:09:11 +02:00
ctljack.c ALSA: hda - Add missing inclusion of linux/export.h 2011-11-16 14:28:33 +01:00
device.c ALSA: add/change some comments describing function return values 2013-03-12 08:32:53 +01:00
hrtimer.c ALSA: hrtimer: remove superfluous tasklet invocation 2011-02-10 18:53:32 +01:00
hwdep.c ALSA: add/change some comments describing function return values 2013-03-12 08:32:53 +01:00
hwdep_compat.c
info.c sound updates for v3.10-rc1 2013-05-03 09:10:23 -07:00
info_oss.c ALSA: remove the main version information 2012-09-04 11:38:32 +02:00
init.c ALSA: Add kconfig to specify the max card numbers 2013-05-24 16:41:46 +02:00
isadma.c ALSA: add/change some comments describing function return values 2013-03-12 08:32:53 +01:00
jack.c ALSA: add/change some comments describing function return values 2013-03-12 08:32:53 +01:00
memalloc.c ALSA: add/change some comments describing function return values 2013-03-12 08:32:53 +01:00
memory.c ALSA: add/change some comments describing function return values 2013-03-12 08:32:53 +01:00
misc.c sound: use printk_get_level and printk_skip_level 2012-07-30 17:25:14 -07:00
pcm.c ALSA: fix oops in snd_pcm_info() caused by ASoC DPCM 2013-10-31 17:36:47 +01:00
pcm_compat.c ALSA: core: fix 64-bit SNDRV_PCM_IOCTL_STATUS ABI breakage 2012-10-28 09:52:37 +01:00
pcm_dmaengine.c ALSA: move dmaengine implementation from ASoC to ALSA core 2013-08-15 11:18:09 +01:00
pcm_lib.c ALSA: pcm: Use snd_printd_ratelimit() 2013-08-19 15:48:48 +02:00
pcm_memory.c ALSA: add/change some comments describing function return values 2013-03-12 08:32:53 +01:00
pcm_misc.c ALSA: add DSD formats 2013-04-18 10:02:33 +02:00
pcm_native.c pcm_native: switch to fdget()/fdput() 2013-06-29 12:57:06 +04:00
pcm_timer.c
rawmidi.c ALSA: add/change some comments describing function return values 2013-03-12 08:32:53 +01:00
rawmidi_compat.c
rtctimer.c ALSA: rtctimer.c needs module.h 2011-07-30 08:03:35 +02:00
sgbuf.c ALSA: Make snd_sgbuf_get_{ptr|addr}() available for non-SG cases 2012-09-23 11:24:42 +02:00
sound.c ALSA: add/change some comments describing function return values 2013-03-12 08:32:53 +01:00
sound_oss.c ALSA: Fix card refcount unbalance 2012-11-08 14:36:18 +01:00
timer.c device.h: cleanup users outside of linux/include (C files) 2012-03-11 14:27:37 -04:00
timer_compat.c
vmaster.c ALSA: vmaster: Fix the regression of missing vmaster hook call 2013-07-03 14:01:32 +02:00