Re: [PATCH 3/4] usb: typec: Factor out non-PD fwnode properties

From: kernel test robot
Date: Wed Feb 02 2022 - 02:45:10 EST


Hi Samuel,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on usb/usb-testing]
[also build test WARNING on robh/for-next v5.17-rc2 next-20220202]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url: https://github.com/0day-ci/linux/commits/Samuel-Holland/dt-bindings-vendor-prefixes-Add-willsemi/20220201-112541
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing
config: openrisc-randconfig-m031-20220201 (https://download.01.org/0day-ci/archive/20220202/202202021458.xcH4F4SQ-lkp@xxxxxxxxx/config)
compiler: or1k-linux-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

smatch warnings:
drivers/usb/typec/class.c:1919 typec_get_fw_cap() warn: unsigned 'cap->type' is never less than zero.
drivers/usb/typec/class.c:1926 typec_get_fw_cap() warn: unsigned 'cap->data' is never less than zero.

vim +1919 drivers/usb/typec/class.c

1896
1897 int typec_get_fw_cap(struct typec_capability *cap,
1898 struct fwnode_handle *fwnode)
1899 {
1900 const char *cap_str;
1901 int ret;
1902
1903 /*
1904 * This fwnode has a "compatible" property, but is never populated as a
1905 * struct device. Instead we simply parse it to read the properties.
1906 * This it breaks fw_devlink=on. To maintain backward compatibility
1907 * with existing DT files, we work around this by deleting any
1908 * fwnode_links to/from this fwnode.
1909 */
1910 fw_devlink_purge_absent_suppliers(fwnode);
1911
1912 cap->fwnode = fwnode;
1913
1914 ret = fwnode_property_read_string(fwnode, "power-role", &cap_str);
1915 if (ret < 0)
1916 return ret;
1917
1918 cap->type = typec_find_port_power_role(cap_str);
> 1919 if (cap->type < 0)
1920 return cap->type;
1921
1922 /* USB data support is optional */
1923 ret = fwnode_property_read_string(fwnode, "data-role", &cap_str);
1924 if (ret == 0) {
1925 cap->data = typec_find_port_data_role(cap_str);
> 1926 if (cap->data < 0)
1927 return cap->data;
1928 }
1929
1930 /* Get the preferred power role for a DRP */
1931 if (cap->type == TYPEC_PORT_DRP) {
1932 cap->prefer_role = TYPEC_NO_PREFERRED_ROLE;
1933
1934 ret = fwnode_property_read_string(fwnode, "try-power-role", &cap_str);
1935 if (ret == 0) {
1936 cap->prefer_role = typec_find_power_role(cap_str);
1937 if (cap->prefer_role < 0)
1938 return cap->prefer_role;
1939 }
1940 }
1941
1942 return 0;
1943 }
1944 EXPORT_SYMBOL_GPL(typec_get_fw_cap);
1945

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx