Hello Gil Fine, Commit 25d905d2b819 ("thunderbolt: Allow USB3 bandwidth to be lower than maximum supported") from Feb 12, 2024 (linux-next), leads to the following Smatch static checker warning: drivers/thunderbolt/tunnel.c:2113 tb_tunnel_alloc_usb3() error: uninitialized symbol 'max_rate'. drivers/thunderbolt/tunnel.c 2061 struct tb_tunnel *tb_tunnel_alloc_usb3(struct tb *tb, struct tb_port *up, 2062 struct tb_port *down, int max_up, 2063 int max_down) 2064 { 2065 struct tb_tunnel *tunnel; 2066 struct tb_path *path; 2067 int max_rate; 2068 2069 if (!tb_route(down->sw) && (max_up > 0 || max_down > 0)) { ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The patch adds this condition. If both of these are <= 0 then max_rate is uninitialized. 2070 /* 2071 * For USB3 isochronous transfers, we allow bandwidth which is 2072 * not higher than 90% of maximum supported bandwidth by USB3 2073 * adapters. 2074 */ 2075 max_rate = tb_usb3_max_link_rate(down, up); 2076 if (max_rate < 0) 2077 return NULL; 2078 2079 max_rate = max_rate * 90 / 100; 2080 tb_port_dbg(up, "maximum required bandwidth for USB3 tunnel %d Mb/s\n", 2081 max_rate); 2082 } 2083 2084 tunnel = tb_tunnel_alloc(tb, 2, TB_TUNNEL_USB3); 2085 if (!tunnel) 2086 return NULL; 2087 2088 tunnel->activate = tb_usb3_activate; 2089 tunnel->src_port = down; 2090 tunnel->dst_port = up; 2091 tunnel->max_up = max_up; 2092 tunnel->max_down = max_down; 2093 2094 path = tb_path_alloc(tb, down, TB_USB3_HOPID, up, TB_USB3_HOPID, 0, 2095 "USB3 Down"); 2096 if (!path) { 2097 tb_tunnel_free(tunnel); 2098 return NULL; 2099 } 2100 tb_usb3_init_path(path); 2101 tunnel->paths[TB_USB3_PATH_DOWN] = path; 2102 2103 path = tb_path_alloc(tb, up, TB_USB3_HOPID, down, TB_USB3_HOPID, 0, 2104 "USB3 Up"); 2105 if (!path) { 2106 tb_tunnel_free(tunnel); 2107 return NULL; 2108 } 2109 tb_usb3_init_path(path); 2110 tunnel->paths[TB_USB3_PATH_UP] = path; 2111 2112 if (!tb_route(down->sw)) { --> 2113 tunnel->allocated_up = min(max_rate, max_up); ^^^^^^^^ 2114 tunnel->allocated_down = min(max_rate, max_down); ^^^^^^^^ Uninitialized. 2115 2116 tunnel->init = tb_usb3_init; 2117 tunnel->consumed_bandwidth = tb_usb3_consumed_bandwidth; 2118 tunnel->release_unused_bandwidth = 2119 tb_usb3_release_unused_bandwidth; 2120 tunnel->reclaim_available_bandwidth = 2121 tb_usb3_reclaim_available_bandwidth; 2122 } 2123 2124 return tunnel; 2125 } regards, dan carpenter