All of lore.kernel.org
 help / color / mirror / Atom feed
* [asahilinux:bits/170-atcphy 5/16] drivers/phy/apple/atc.c:2156 atcphy_parse_new_tunable() warn: impossible condition '(offset > (~0)) => (0-u32max > u32max)'
@ 2025-02-19  2:34 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2025-02-19  2:34 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Sven Peter <sven@svenpeter.dev>
CC: Janne Grunau <j@jannau.net>

tree:   https://github.com/AsahiLinux/linux bits/170-atcphy
head:   d9133ae802014bca51082790e834546f42d21231
commit: 6dcc9a0b2ca8beb8f112cdf4a06be2a70b83111b [5/16] WIP: phy: apple: Add Apple Type-C PHY
:::::: branch date: 11 days ago
:::::: commit date: 11 days ago
config: sparc-randconfig-r071-20250218 (https://download.01.org/0day-ci/archive/20250219/202502191004.5HCUpXEb-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 14.2.0

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202502191004.5HCUpXEb-lkp@intel.com/

New smatch warnings:
drivers/phy/apple/atc.c:2156 atcphy_parse_new_tunable() warn: impossible condition '(offset > (~0)) => (0-u32max > u32max)'
drivers/phy/apple/atc.c:2156 atcphy_parse_new_tunable() warn: impossible condition '(mask > (~0)) => (0-u32max > u32max)'
drivers/phy/apple/atc.c:2157 atcphy_parse_new_tunable() warn: impossible condition '(value > (~0)) => (0-u32max > u32max)'

Old smatch warnings:
drivers/phy/apple/atc.c:1609 atcphy_usb3_power_on() warn: inconsistent returns '&atcphy->lock'.

vim +2156 drivers/phy/apple/atc.c

6dcc9a0b2ca8be Sven Peter 2022-11-30  2113  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2114  static int atcphy_parse_new_tunable(struct apple_atcphy *atcphy,
6dcc9a0b2ca8be Sven Peter 2022-11-30  2115  				    struct atcphy_tunable *tunable,
6dcc9a0b2ca8be Sven Peter 2022-11-30  2116  				    const char *name)
6dcc9a0b2ca8be Sven Peter 2022-11-30  2117  {
6dcc9a0b2ca8be Sven Peter 2022-11-30  2118  	struct property *prop;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2119  	u64 *fdt_tunable;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2120  	int ret, i;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2121  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2122  	prop = of_find_property(atcphy->np, name, NULL);
6dcc9a0b2ca8be Sven Peter 2022-11-30  2123  	if (!prop) {
6dcc9a0b2ca8be Sven Peter 2022-11-30  2124  		dev_err(atcphy->dev, "tunable %s not found\n", name);
6dcc9a0b2ca8be Sven Peter 2022-11-30  2125  		return -ENOENT;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2126  	}
6dcc9a0b2ca8be Sven Peter 2022-11-30  2127  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2128  	if (prop->length % (4 * sizeof(u64)))
6dcc9a0b2ca8be Sven Peter 2022-11-30  2129  		return -EINVAL;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2130  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2131  	fdt_tunable = kzalloc(prop->length, GFP_KERNEL);
6dcc9a0b2ca8be Sven Peter 2022-11-30  2132  	if (!fdt_tunable)
6dcc9a0b2ca8be Sven Peter 2022-11-30  2133  		return -ENOMEM;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2134  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2135  	tunable->sz = prop->length / (4 * sizeof(u64));
6dcc9a0b2ca8be Sven Peter 2022-11-30  2136  	ret = of_property_read_variable_u64_array(atcphy->np, name, fdt_tunable,
6dcc9a0b2ca8be Sven Peter 2022-11-30  2137  						  tunable->sz, tunable->sz);
6dcc9a0b2ca8be Sven Peter 2022-11-30  2138  	if (ret < 0)
6dcc9a0b2ca8be Sven Peter 2022-11-30  2139  		goto err_free_fdt;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2140  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2141  	tunable->values = devm_kcalloc(atcphy->dev, tunable->sz,
6dcc9a0b2ca8be Sven Peter 2022-11-30  2142  				       sizeof(*tunable->values), GFP_KERNEL);
6dcc9a0b2ca8be Sven Peter 2022-11-30  2143  	if (!tunable->values) {
6dcc9a0b2ca8be Sven Peter 2022-11-30  2144  		ret = -ENOMEM;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2145  		goto err_free_fdt;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2146  	}
6dcc9a0b2ca8be Sven Peter 2022-11-30  2147  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2148  	for (i = 0; i < tunable->sz; ++i) {
6dcc9a0b2ca8be Sven Peter 2022-11-30  2149  		u32 offset, size, mask, value;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2150  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2151  		offset = fdt_tunable[4 * i];
6dcc9a0b2ca8be Sven Peter 2022-11-30  2152  		size = fdt_tunable[4 * i + 1];
6dcc9a0b2ca8be Sven Peter 2022-11-30  2153  		mask = fdt_tunable[4 * i + 2];
6dcc9a0b2ca8be Sven Peter 2022-11-30  2154  		value = fdt_tunable[4 * i + 3];
6dcc9a0b2ca8be Sven Peter 2022-11-30  2155  
6dcc9a0b2ca8be Sven Peter 2022-11-30 @2156  		if (offset > U32_MAX || size != 4 || mask > U32_MAX ||
6dcc9a0b2ca8be Sven Peter 2022-11-30 @2157  		    value > U32_MAX) {
6dcc9a0b2ca8be Sven Peter 2022-11-30  2158  			ret = -EINVAL;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2159  			goto err_free_values;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2160  		}
6dcc9a0b2ca8be Sven Peter 2022-11-30  2161  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2162  		tunable->values[i].offset = offset;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2163  		tunable->values[i].mask = mask;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2164  		tunable->values[i].value = value;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2165  	}
6dcc9a0b2ca8be Sven Peter 2022-11-30  2166  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2167  	trace_atcphy_parsed_tunable(name, tunable);
6dcc9a0b2ca8be Sven Peter 2022-11-30  2168  	kfree(fdt_tunable);
6dcc9a0b2ca8be Sven Peter 2022-11-30  2169  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2170  	BUG_ON(1);
6dcc9a0b2ca8be Sven Peter 2022-11-30  2171  	return 0;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2172  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2173  err_free_values:
6dcc9a0b2ca8be Sven Peter 2022-11-30  2174  	devm_kfree(atcphy->dev, tunable->values);
6dcc9a0b2ca8be Sven Peter 2022-11-30  2175  err_free_fdt:
6dcc9a0b2ca8be Sven Peter 2022-11-30  2176  	kfree(fdt_tunable);
6dcc9a0b2ca8be Sven Peter 2022-11-30  2177  	return ret;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2178  }
6dcc9a0b2ca8be Sven Peter 2022-11-30  2179  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 2+ messages in thread
* [asahilinux:bits/170-atcphy 5/16] drivers/phy/apple/atc.c:2156 atcphy_parse_new_tunable() warn: impossible condition '(offset > (~0)) => (0-u32max > u32max)'
@ 2025-02-19  7:25 Dan Carpenter
  0 siblings, 0 replies; 2+ messages in thread
From: Dan Carpenter @ 2025-02-19  7:25 UTC (permalink / raw)
  To: oe-kbuild, Sven Peter; +Cc: lkp, oe-kbuild-all, Janne Grunau

tree:   https://github.com/AsahiLinux/linux bits/170-atcphy
head:   d9133ae802014bca51082790e834546f42d21231
commit: 6dcc9a0b2ca8beb8f112cdf4a06be2a70b83111b [5/16] WIP: phy: apple: Add Apple Type-C PHY
config: sparc-randconfig-r071-20250218 (https://download.01.org/0day-ci/archive/20250219/202502191004.5HCUpXEb-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 14.2.0

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
| Closes: https://lore.kernel.org/r/202502191004.5HCUpXEb-lkp@intel.com/

New smatch warnings:
drivers/phy/apple/atc.c:2156 atcphy_parse_new_tunable() warn: impossible condition '(offset > (~0)) => (0-u32max > u32max)'
drivers/phy/apple/atc.c:2156 atcphy_parse_new_tunable() warn: impossible condition '(mask > (~0)) => (0-u32max > u32max)'
drivers/phy/apple/atc.c:2157 atcphy_parse_new_tunable() warn: impossible condition '(value > (~0)) => (0-u32max > u32max)'

Old smatch warnings:
drivers/phy/apple/atc.c:1609 atcphy_usb3_power_on() warn: inconsistent returns '&atcphy->lock'.

vim +2156 drivers/phy/apple/atc.c

6dcc9a0b2ca8be Sven Peter 2022-11-30  2114  static int atcphy_parse_new_tunable(struct apple_atcphy *atcphy,
6dcc9a0b2ca8be Sven Peter 2022-11-30  2115  				    struct atcphy_tunable *tunable,
6dcc9a0b2ca8be Sven Peter 2022-11-30  2116  				    const char *name)
6dcc9a0b2ca8be Sven Peter 2022-11-30  2117  {
6dcc9a0b2ca8be Sven Peter 2022-11-30  2118  	struct property *prop;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2119  	u64 *fdt_tunable;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2120  	int ret, i;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2121  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2122  	prop = of_find_property(atcphy->np, name, NULL);
6dcc9a0b2ca8be Sven Peter 2022-11-30  2123  	if (!prop) {
6dcc9a0b2ca8be Sven Peter 2022-11-30  2124  		dev_err(atcphy->dev, "tunable %s not found\n", name);
6dcc9a0b2ca8be Sven Peter 2022-11-30  2125  		return -ENOENT;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2126  	}
6dcc9a0b2ca8be Sven Peter 2022-11-30  2127  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2128  	if (prop->length % (4 * sizeof(u64)))
6dcc9a0b2ca8be Sven Peter 2022-11-30  2129  		return -EINVAL;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2130  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2131  	fdt_tunable = kzalloc(prop->length, GFP_KERNEL);
6dcc9a0b2ca8be Sven Peter 2022-11-30  2132  	if (!fdt_tunable)
6dcc9a0b2ca8be Sven Peter 2022-11-30  2133  		return -ENOMEM;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2134  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2135  	tunable->sz = prop->length / (4 * sizeof(u64));
6dcc9a0b2ca8be Sven Peter 2022-11-30  2136  	ret = of_property_read_variable_u64_array(atcphy->np, name, fdt_tunable,
6dcc9a0b2ca8be Sven Peter 2022-11-30  2137  						  tunable->sz, tunable->sz);
6dcc9a0b2ca8be Sven Peter 2022-11-30  2138  	if (ret < 0)
6dcc9a0b2ca8be Sven Peter 2022-11-30  2139  		goto err_free_fdt;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2140  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2141  	tunable->values = devm_kcalloc(atcphy->dev, tunable->sz,
6dcc9a0b2ca8be Sven Peter 2022-11-30  2142  				       sizeof(*tunable->values), GFP_KERNEL);
6dcc9a0b2ca8be Sven Peter 2022-11-30  2143  	if (!tunable->values) {
6dcc9a0b2ca8be Sven Peter 2022-11-30  2144  		ret = -ENOMEM;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2145  		goto err_free_fdt;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2146  	}
6dcc9a0b2ca8be Sven Peter 2022-11-30  2147  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2148  	for (i = 0; i < tunable->sz; ++i) {
6dcc9a0b2ca8be Sven Peter 2022-11-30  2149  		u32 offset, size, mask, value;

This should be declared as u64.

6dcc9a0b2ca8be Sven Peter 2022-11-30  2150  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2151  		offset = fdt_tunable[4 * i];
6dcc9a0b2ca8be Sven Peter 2022-11-30  2152  		size = fdt_tunable[4 * i + 1];
6dcc9a0b2ca8be Sven Peter 2022-11-30  2153  		mask = fdt_tunable[4 * i + 2];
6dcc9a0b2ca8be Sven Peter 2022-11-30  2154  		value = fdt_tunable[4 * i + 3];
6dcc9a0b2ca8be Sven Peter 2022-11-30  2155  
6dcc9a0b2ca8be Sven Peter 2022-11-30 @2156  		if (offset > U32_MAX || size != 4 || mask > U32_MAX ||
6dcc9a0b2ca8be Sven Peter 2022-11-30 @2157  		    value > U32_MAX) {

The current code truncated invalid values instead of returning -EINVAL.

6dcc9a0b2ca8be Sven Peter 2022-11-30  2158  			ret = -EINVAL;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2159  			goto err_free_values;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2160  		}
6dcc9a0b2ca8be Sven Peter 2022-11-30  2161  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2162  		tunable->values[i].offset = offset;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2163  		tunable->values[i].mask = mask;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2164  		tunable->values[i].value = value;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2165  	}
6dcc9a0b2ca8be Sven Peter 2022-11-30  2166  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2167  	trace_atcphy_parsed_tunable(name, tunable);
6dcc9a0b2ca8be Sven Peter 2022-11-30  2168  	kfree(fdt_tunable);
6dcc9a0b2ca8be Sven Peter 2022-11-30  2169  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2170  	BUG_ON(1);
6dcc9a0b2ca8be Sven Peter 2022-11-30  2171  	return 0;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2172  
6dcc9a0b2ca8be Sven Peter 2022-11-30  2173  err_free_values:
6dcc9a0b2ca8be Sven Peter 2022-11-30  2174  	devm_kfree(atcphy->dev, tunable->values);
6dcc9a0b2ca8be Sven Peter 2022-11-30  2175  err_free_fdt:
6dcc9a0b2ca8be Sven Peter 2022-11-30  2176  	kfree(fdt_tunable);
6dcc9a0b2ca8be Sven Peter 2022-11-30  2177  	return ret;
6dcc9a0b2ca8be Sven Peter 2022-11-30  2178  }

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2025-02-19  7:25 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-19  2:34 [asahilinux:bits/170-atcphy 5/16] drivers/phy/apple/atc.c:2156 atcphy_parse_new_tunable() warn: impossible condition '(offset > (~0)) => (0-u32max > u32max)' kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2025-02-19  7:25 Dan Carpenter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.