• Alan Stern's avatar
    USB: gadget: dummy-hcd: Fix errors in port-reset handling · 6e6aa61d
    Alan Stern authored
    Commit c318840f ("USB: Gadget: dummy-hcd: Fix shift-out-of-bounds
    bug") messed up the way dummy-hcd handles requests to turn on the
    RESET port feature (I didn't notice that the original switch case
    ended with a fallthrough).  The call to set_link_state() was
    inadvertently removed, as was the code to set the USB_PORT_STAT_RESET
    flag when the speed is USB2.
    
    In addition, the original code never checked whether the port was
    connected before handling the port-reset request.  There was a check
    for the port being powered, but it was removed by that commit!  In
    practice this doesn't matter much because the kernel doesn't try to
    reset disconnected ports, but it's still bad form.
    
    This patch fixes these problems by changing the fallthrough to break,
    adding back in the missing set_link_state() call, setting the
    port-reset status flag, adding a port-is-connected test, and removing
    a redundant assignment statement.
    
    Fixes: c318840f ("USB: Gadget: dummy-hcd: Fix shift-out-of-bounds bug")
    CC: <stable@vger.kernel.org>
    Acked-by: default avatarFelipe Balbi <balbi@kernel.org>
    Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/20210113194510.GA1290698@rowland.harvard.eduSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    6e6aa61d
dummy_hcd.c 72 KB