• Mika Westerberg's avatar
    thunderbolt: Do not handle ICM events after domain is stopped · 86da809d
    Mika Westerberg authored
    If there is a long chain of devices connected when the driver is loaded
    ICM sends device connected event for each and those are put to tb->wq
    for later processing. Now if the driver gets unloaded in the middle, so
    that the work queue is not yet empty it gets flushed by tb_domain_stop().
    However, by that time the root switch is already removed so the driver
    crashes when it tries to dereference it in ICM event handling callbacks.
    
    Fix this by checking whether the root switch is already removed. If it
    is we know that the domain is stopped and we should merely skip handling
    the event.
    Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    86da809d
icm.c 50.1 KB