lkml.org 
[lkml]   [2022]   [Oct]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 6.0 850/862] ALSA: usb-audio: Fix last interface check for registration
    Date
    From: Takashi Iwai <tiwai@suse.de>

    commit 39efc9c8a973ddff5918191525d1679d0fb368ea upstream.

    The recent fix in commit 6392dcd1d0c7 ("ALSA: usb-audio: Register card
    at the last interface") tried to delay the card registration until the
    last found interface is probed. It assumed that the probe callback
    gets called for those later interfaces, but it's not always true; as
    the driver loops over the descriptor and probes the matching ones,
    it's not separately called via multiple probe calls. This results in
    the missing card registration, i.e. no sound device.

    For addressing this problem, replace the check whether the last
    interface is processed with usb_interface_claimed() instead of the
    comparison with the probe interface number.

    Fixes: 6392dcd1d0c7 ("ALSA: usb-audio: Register card at the last interface")
    Link: https://lore.kernel.org/r/20220915085947.7922-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    sound/usb/card.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/sound/usb/card.c
    +++ b/sound/usb/card.c
    @@ -884,7 +884,7 @@ static int usb_audio_probe(struct usb_in
    * one given via option
    */
    if (check_delayed_register_option(chip) == ifnum ||
    - chip->last_iface == ifnum) {
    + usb_interface_claimed(usb_ifnum_to_if(dev, chip->last_iface))) {
    err = snd_card_register(chip->card);
    if (err < 0)
    goto __error;

    \
     
     \ /
      Last update: 2022-10-19 13:14    [W:2.732 / U:1.076 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site