From 83bc50dc6b9887d5e6b9b091b050e62ae526fd01 Mon Sep 17 00:00:00 2001 From: Mario Limonciello Date: Thu, 3 Mar 2022 07:13:25 -0600 Subject: [PATCH] thunderbolt: Do not resume routers if UID is not set BugLink: https://bugs.launchpad.net/bugs/1962349 Routers might not have a UID set if the DROM read failed during initialization previously. Normally upon resume the UID is re-read to confirm it's the same device connected. * If the DROM read failed during init but then succeeded during resume it could either be a new device or faulty device * If the DROM read failed during init and also failed during resume it might be a different device plugged in all together. Detect this situation and prevent re-using the same configuration in these cirucmstances. Signed-off-by: Mario Limonciello Signed-off-by: Mika Westerberg (cherry picked from commit a283de3ec646f19b09f3c8e4c8f57c0e017c9b2b linux-next) Signed-off-by: You-Sheng Yang Signed-off-by: Timo Aaltonen --- drivers/thunderbolt/switch.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/thunderbolt/switch.c b/drivers/thunderbolt/switch.c index 9704447bdf5e1..23af952456d20 100644 --- a/drivers/thunderbolt/switch.c +++ b/drivers/thunderbolt/switch.c @@ -2920,6 +2920,10 @@ int tb_switch_resume(struct tb_switch *sw) return err; } + /* We don't have any way to confirm this was the same device */ + if (!sw->uid) + return -ENODEV; + if (tb_switch_is_usb4(sw)) err = usb4_switch_read_uid(sw, &uid); else