thunderbolt: Do not allow subtracting more NFC credits than configured
authorMika Westerberg <mika.westerberg@linux.intel.com>
Thu, 18 Nov 2021 07:06:45 +0000 (09:06 +0200)
committerMika Westerberg <mika.westerberg@linux.intel.com>
Tue, 7 Dec 2021 12:18:33 +0000 (15:18 +0300)
This might happen if the boot firmware uses different amount of NFC
credits than what the router suggests, or we are dealing with pre-USB4
device.

Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
drivers/thunderbolt/switch.c

index 3014146..463cfdc 100644 (file)
@@ -623,6 +623,9 @@ int tb_port_add_nfc_credits(struct tb_port *port, int credits)
                return 0;
 
        nfc_credits = port->config.nfc_credits & ADP_CS_4_NFC_BUFFERS_MASK;
+       if (credits < 0)
+               credits = max_t(int, -nfc_credits, credits);
+
        nfc_credits += credits;
 
        tb_port_dbg(port, "adding %d NFC credits to %lu", credits,