Hello RD Babiera, The patch fb7ff25ae433: "usb: typec: tcpm: add discover identity support for SOP'" from Jan 8, 2024 (linux-next), leads to the following Smatch static checker warning: drivers/usb/typec/tcpm/tcpm.c:1931 tcpm_pd_svdm() error: uninitialized symbol 'svdm_version'. drivers/usb/typec/tcpm/tcpm.c 1859 static int tcpm_pd_svdm(struct tcpm_port *port, struct typec_altmode *adev, 1860 const u32 *p, int cnt, u32 *response, 1861 enum adev_actions *adev_action, 1862 enum tcpm_transmit_type rx_sop_type, 1863 enum tcpm_transmit_type *response_tx_sop_type) 1864 { 1865 struct typec_port *typec = port->typec_port; 1866 struct typec_altmode *pdev, *pdev_prime; 1867 struct pd_mode_data *modep, *modep_prime; 1868 int svdm_version; 1869 int rlen = 0; 1870 int cmd_type; 1871 int cmd; 1872 int i; 1873 int ret; 1874 1875 cmd_type = PD_VDO_CMDT(p[0]); 1876 cmd = PD_VDO_CMD(p[0]); 1877 1878 tcpm_log(port, "Rx VDM cmd 0x%x type %d cmd %d len %d", 1879 p[0], cmd_type, cmd, cnt); 1880 1881 modep = &port->mode_data; 1882 1883 pdev = typec_match_altmode(port->partner_altmode, ALTMODE_DISCOVERY_MAX, 1884 PD_VDO_VID(p[0]), PD_VDO_OPOS(p[0])); 1885 1886 switch (rx_sop_type) { 1887 case TCPC_TX_SOP_PRIME: 1888 modep_prime = &port->mode_data_prime; 1889 pdev_prime = typec_match_altmode(port->plug_prime_altmode, 1890 ALTMODE_DISCOVERY_MAX, 1891 PD_VDO_VID(p[0]), 1892 PD_VDO_OPOS(p[0])); 1893 if (!IS_ERR_OR_NULL(port->cable)) { 1894 svdm_version = typec_get_cable_svdm_version(typec); 1895 if (PD_VDO_SVDM_VER(p[0]) < svdm_version) 1896 typec_cable_set_svdm_version(port->cable, svdm_version); 1897 } svdm_version is uninitialized if port->cable isn't a valid pointer. 1898 break; 1899 case TCPC_TX_SOP: 1900 modep = &port->mode_data; 1901 pdev = typec_match_altmode(port->partner_altmode, 1902 ALTMODE_DISCOVERY_MAX, 1903 PD_VDO_VID(p[0]), 1904 PD_VDO_OPOS(p[0])); 1905 svdm_version = typec_get_negotiated_svdm_version(typec); 1906 if (svdm_version < 0) 1907 return 0; 1908 break; 1909 default: 1910 modep = &port->mode_data; 1911 pdev = typec_match_altmode(port->partner_altmode, 1912 ALTMODE_DISCOVERY_MAX, 1913 PD_VDO_VID(p[0]), 1914 PD_VDO_OPOS(p[0])); 1915 svdm_version = typec_get_negotiated_svdm_version(typec); 1916 if (svdm_version < 0) 1917 return 0; 1918 break; 1919 } 1920 1921 switch (cmd_type) { 1922 case CMDT_INIT: 1923 switch (cmd) { 1924 case CMD_DISCOVER_IDENT: 1925 if (PD_VDO_VID(p[0]) != USB_SID_PD) 1926 break; 1927 1928 if (IS_ERR_OR_NULL(port->partner)) 1929 break; 1930 --> 1931 if (PD_VDO_SVDM_VER(p[0]) < svdm_version) { ^^^^^^^^^^^^ 1932 typec_partner_set_svdm_version(port->partner, 1933 PD_VDO_SVDM_VER(p[0])); 1934 svdm_version = PD_VDO_SVDM_VER(p[0]); 1935 } regards, dan carpenter