Skip to content
  • Takashi Iwai's avatar
    ALSA: usb-audio: Fix substream assignments · 8260ef07
    Takashi Iwai authored
    In 3.5 kernel, the endpoint is assigned dynamically for the
    substreams, but the PCM assignment still checks the presence of the
    endpoint pointer.  This ended up in duplicated PCM substream creations
    at probing time, resulting in kernel warnings like:
    
    WARNING: at fs/proc/generic.c:586 proc_register+0x169/0x1a6()
    Pid: 1152, comm: modprobe Not tainted 3.5.0-rc1-00110-g71fae7e7
    
     #2
    Call Trace:
     [<ffffffff8102a400>] warn_slowpath_common+0x83/0x9c
     [<ffffffff8102a4bc>] warn_slowpath_fmt+0x46/0x48
     [<ffffffff813829ad>] ? add_preempt_count+0x39/0x3b
     [<ffffffff811292f0>] proc_register+0x169/0x1a6
     [<ffffffff8112962e>] create_proc_entry+0x74/0x8c
     [<ffffffffa018eb63>] snd_info_register+0x3e/0xc3 [snd]
     [<ffffffffa01fde2e>] snd_pcm_new_stream+0xb1/0x404 [snd_pcm]
     [<ffffffffa024861f>] snd_usb_add_audio_stream+0xd2/0x230 [snd_usb_audio]
     [<ffffffffa0241d33>] ? snd_usb_parse_audio_format+0x252/0x34f [snd_usb_audio]
     [<ffffffff810d6b17>] ? kmem_cache_alloc_trace+0xab/0xbb
     [<ffffffffa0248c29>] snd_usb_parse_audio_interface+0x4ac/0x567 [snd_usb_audio]
     [<ffffffffa023f0ff>] snd_usb_create_stream+0xe9/0x125 [snd_usb_audio]
     [<ffffffffa023f9b1>] usb_audio_probe+0x62a/0x72c [snd_usb_audio]
     .....
    
    This patch fixes the regression by checking the fixed endpoint number
    for each substream instead of the endpoint pointer.
    
    Reported-and-tested-by: default avatarJamie Heilman <jamie@audible.transient.net>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    8260ef07