• Russell King's avatar
    ALSA: fix oops in snd_pcm_info() caused by ASoC DPCM · a4461f41
    Russell King authored
    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: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    Acked-by: default avatarMark Brown <broonie@linaro.org>
    Cc: <stable@vger.kernel.org> [v3.4+]
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    a4461f41
pcm.c 33.9 KB