diff options
Diffstat (limited to 'drivers/thunderbolt/tb.c')
-rw-r--r-- | drivers/thunderbolt/tb.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/thunderbolt/tb.c b/drivers/thunderbolt/tb.c index 164dea083e9..f1b6100b6cf 100644 --- a/drivers/thunderbolt/tb.c +++ b/drivers/thunderbolt/tb.c @@ -71,6 +71,10 @@ void thunderbolt_shutdown_and_free(struct tb *tb) { mutex_lock(&tb->lock); + if (tb->root_switch) + tb_switch_free(tb->root_switch); + tb->root_switch = NULL; + if (tb->ctl) { tb_ctl_stop(tb->ctl); tb_ctl_free(tb->ctl); @@ -126,6 +130,10 @@ struct tb *thunderbolt_alloc_and_start(struct tb_nhi *nhi) */ tb_ctl_start(tb->ctl); + tb->root_switch = tb_switch_alloc(tb, 0); + if (!tb->root_switch) + goto err_locked; + /* Allow tb_handle_hotplug to progress events */ tb->hotplug_active = true; mutex_unlock(&tb->lock); |