thunderbolt: Do not handle ICM events after domain is stopped
authorMika Westerberg <mika.westerberg@linux.intel.com>
Mon, 24 Sep 2018 10:20:44 +0000 (13:20 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 2 Oct 2018 17:51:16 +0000 (10:51 -0700)
commit86da809dda64a63fc27e05a215475325c3aaae92
tree319f800e3890bd076292ad97cc3a212d9a934db4
parent7012040576c6ae25a47035659ee48673612c2c27
thunderbolt: Do not handle ICM events after domain is stopped

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: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/thunderbolt/icm.c