thunderbolt: Bond lanes only when dual_link_port != NULL in alloc_dev_default()
authorMika Westerberg <mika.westerberg@linux.intel.com>
Mon, 7 Jun 2021 10:37:46 +0000 (13:37 +0300)
committerMika Westerberg <mika.westerberg@linux.intel.com>
Fri, 11 Jun 2021 08:42:54 +0000 (11:42 +0300)
We should not dereference ->dual_link_port if it is NULL and lane bonding
is requested. For this reason move lane bonding configuration happen
inside the block where ->dual_link_port != NULL.

Fixes: 54509f5005ca ("thunderbolt: Add KUnit tests for path walking")
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: Yehezkel Bernat <YehezkelShB@gmail.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
drivers/thunderbolt/test.c

index cf34c1e..ba5afd4 100644 (file)
@@ -303,18 +303,18 @@ static struct tb_switch *alloc_dev_default(struct kunit *test,
        if (port->dual_link_port && upstream_port->dual_link_port) {
                port->dual_link_port->remote = upstream_port->dual_link_port;
                upstream_port->dual_link_port->remote = port->dual_link_port;
-       }
 
-       if (bonded) {
-               /* Bonding is used */
-               port->bonded = true;
-               port->total_credits *= 2;
-               port->dual_link_port->bonded = true;
-               port->dual_link_port->total_credits = 0;
-               upstream_port->bonded = true;
-               upstream_port->total_credits *= 2;
-               upstream_port->dual_link_port->bonded = true;
-               upstream_port->dual_link_port->total_credits = 0;
+               if (bonded) {
+                       /* Bonding is used */
+                       port->bonded = true;
+                       port->total_credits *= 2;
+                       port->dual_link_port->bonded = true;
+                       port->dual_link_port->total_credits = 0;
+                       upstream_port->bonded = true;
+                       upstream_port->total_credits *= 2;
+                       upstream_port->dual_link_port->bonded = true;
+                       upstream_port->dual_link_port->total_credits = 0;
+               }
        }
 
        return sw;