* [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.