Skip to content
  • Nikolay Yakimov's avatar
    USB: Fix configuration selection issues introduced in v4.20.0 · 25b01614
    Nikolay Yakimov authored
    Commit f13912d3 introduced changes to the usb_choose_configuration function
    to better support USB Audio UAC3-compatible devices. However, there are a few
    problems with this patch. First of all, it adds new "if" clauses in the middle
    of an existing "if"/"else if" tree, which obviously breaks pre-existing logic.
    Secondly, since it continues iterating over configurations in one of the branches,
    other code in the loop can choose an unintended configuration. Finally,
    if an audio device's first configuration is UAC3-compatible, and there
    are multiple UAC3 configurations, the second one would be chosen, due to
    the first configuration never being checked for UAC3-compatibility.
    
    Commit ff2a8c53 tries to fix the second issue, but it goes about it in a
    somewhat unnecessarily convoluted way, in my opinion, and does nothing
    to fix the first or the last one.
    
    This patch tries to rectify problems described by essentially rewriting
    code introduced in f13912d3
    
    . Notice the code was moved to *before*
    the "if"/"else if" tree.
    
    Signed-off-by: default avatarNikolay Yakimov <root@livid.pp.ru>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    25b01614