mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 09:36:22 +02:00
thunderbolt: Set tb->root_switch to NULL when domain is stopped
Similarly what we do with the firmware connection manager. This makes tb_xdp_handle_request() return error to the remote host. However, we need to make sure we keep the uuid alive so that we can reply until the whole domain is released. Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
This commit is contained in:
parent
4c63f29872
commit
e56249d8a6
|
|
@ -2952,6 +2952,7 @@ static void tb_stop(struct tb *tb)
|
|||
tb_tunnel_put(tunnel);
|
||||
}
|
||||
tb_switch_remove(tb->root_switch);
|
||||
tb->root_switch = NULL;
|
||||
tcm->hotplug_active = false; /* signal tb_handle_hotplug to quit */
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -740,7 +740,7 @@ static void tb_xdp_handle_request(struct work_struct *work)
|
|||
|
||||
mutex_lock(&tb->lock);
|
||||
if (tb->root_switch)
|
||||
uuid = tb->root_switch->uuid;
|
||||
uuid = kmemdup(tb->root_switch->uuid, sizeof(*uuid), GFP_KERNEL);
|
||||
else
|
||||
uuid = NULL;
|
||||
mutex_unlock(&tb->lock);
|
||||
|
|
@ -880,6 +880,7 @@ static void tb_xdp_handle_request(struct work_struct *work)
|
|||
}
|
||||
|
||||
out:
|
||||
kfree(uuid);
|
||||
kfree(xw->pkg);
|
||||
kfree(xw);
|
||||
|
||||
|
|
@ -2348,6 +2349,9 @@ static struct tb_xdomain *switch_find_xdomain(struct tb_switch *sw,
|
|||
{
|
||||
struct tb_port *port;
|
||||
|
||||
if (!sw)
|
||||
return NULL;
|
||||
|
||||
tb_switch_for_each_port(sw, port) {
|
||||
struct tb_xdomain *xd;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user