thunderbolt: Do not resume routers if UID is not set
authorMario Limonciello <mario.limonciello@amd.com>
Thu, 3 Mar 2022 13:13:25 +0000 (07:13 -0600)
committerMika Westerberg <mika.westerberg@linux.intel.com>
Fri, 4 Mar 2022 14:10:36 +0000 (17:10 +0300)
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 <mario.limonciello@amd.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
drivers/thunderbolt/switch.c

index b5fb3e7..294518a 100644 (file)
@@ -2980,6 +2980,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