• Takamasa Ohtake's avatar
    USB: ohci handles hardware faults during root port resets · 23d10a9e
    Takamasa Ohtake authored
    I have found a problem where the root_port_reset() goes into an infinite
    loop and stalls the kernel.
    
    This happens when a hardware fault inside the machine occurs during a small
    timing window.  In case of USB device connection, if a USB device responds to
    hcd_submit_urb(), and later the controller fails before root_port_reset(),
    root_port_reset() will loop infinitely because ohci_readl() will always
    return "-1".  Such a failure can include ejecting a CardBus OHCI controller.
    
    The probability of this problem is low, but it will increase if PnP type
    usage is frequent.  The attached patch can solve this problem and I believe
    that it is better to fix this problem.
    Signed-off-by: default avatarTakamasa Ohtake <ohtake-txa@necst.nec.co.jp>
    Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    23d10a9e
ohci-hub.c 18.5 KB