• Roman Kagan's avatar
    [PATCH] drivers/base/bus.c: fix iteration in driver_detach() · b2d84f07
    Roman Kagan authored
    With 2.6.11 and 2.6.12-rc2 (and perhaps a few versions before) usb
    drivers for multi-interface devices, which do
    usb_driver_release_interface() in their disconnect(), make rmmod hang.
    
    It turns out to be due to a bug in drivers/base/bus.c:driver_detach(),
    that iterates over the list of attached devices with
    list_for_each_safe() under an assumption that device_release_driver()
    only releases the current device, while it may also call
    device_release_driver() for other devices on the same list.
    
    The following patch fixes it.  Please consider applying.
    Signed-off-by: default avatarRoman Kagan <rkagan@mail.ru>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    b2d84f07
bus.c 18 KB