Re: [PATCH 2/2] hwmon: Driver for Texas Instruments INA238
From: kernel test robot
Date: Wed Oct 27 2021 - 05:33:45 EST
Hi Nathan,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on groeck-staging/hwmon-next]
[also build test WARNING on v5.15-rc7 next-20211026]
[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/Nathan-Rossi/Driver-for-TI-INA238-I2C-Power-Monitor/20211025-105911
base: https://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git hwmon-next
config: i386-randconfig-r006-20211027 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 5db7568a6a1fcb408eb8988abdaff2a225a8eb72)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/aafb1ad1e44aa2604f4d8cd8db258d36fcefadfc
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Nathan-Rossi/Driver-for-TI-INA238-I2C-Power-Monitor/20211025-105911
git checkout aafb1ad1e44aa2604f4d8cd8db258d36fcefadfc
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>
All warnings (new ones prefixed by >>):
>> drivers/hwmon/ina238.c:297:2: warning: variable 'regval' is used uninitialized whenever switch default is taken [-Wsometimes-uninitialized]
default:
^~~~~~~
drivers/hwmon/ina238.c:304:48: note: uninitialized use occurs here
ret = regmap_write(data->regmap, attr->index, regval);
^~~~~~
drivers/hwmon/ina238.c:250:12: note: initialize the variable 'regval' to silence this warning
int regval;
^
= 0
1 warning generated.
vim +/regval +297 drivers/hwmon/ina238.c
242
243 static ssize_t ina238_alert_store(struct device *dev,
244 struct device_attribute *da,
245 const char *buf, size_t count)
246 {
247 struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
248 struct ina238_data *data = dev_get_drvdata(dev);
249 long long val;
250 int regval;
251 int ret;
252
253 ret = kstrtoll(buf, 10, &val);
254 if (ret < 0)
255 return ret;
256
257 /* convert decimal to register value */
258 switch (attr->index) {
259 case INA238_SHUNT_OVER_VOLTAGE:
260 case INA238_SHUNT_UNDER_VOLTAGE:
261 /* signed */
262 regval = div_s64((val * 1000), INA238_SHUNT_VOLTAGE_LSB);
263 if (regval > S16_MAX || regval < S16_MIN) {
264 ret = -EINVAL;
265 goto abort;
266 }
267 break;
268 case INA238_BUS_OVER_VOLTAGE:
269 case INA238_BUS_UNDER_VOLTAGE:
270 regval = div_u64((val * 1000), INA238_BUS_VOLTAGE_LSB);
271 if (regval > U16_MAX || regval < 0) {
272 ret = -EINVAL;
273 goto abort;
274 }
275 break;
276 case INA238_POWER_LIMIT:
277 /*
278 * Compared against the 24-bit power register, lower 8-bits are
279 * truncated. Same conversion to/from uW as POWER register.
280 */
281 regval = div_u64(val * 5 * data->rshunt,
282 1000 * INA238_FIXED_SHUNT) >> 8;
283 if (regval > U16_MAX || regval < 0) {
284 ret = -EINVAL;
285 goto abort;
286 }
287 break;
288 case INA238_TEMP_LIMIT:
289 /* Bits 15-4 of register */
290 regval = (div_s64(val, INA238_DIE_TEMP_LSB) << 4);
291 if (regval > S16_MAX || regval < S16_MIN) {
292 ret = -EINVAL;
293 goto abort;
294 }
295 regval = regval & 0xfff0;
296 break;
> 297 default:
298 WARN_ON_ONCE(1);
299 break;
300 }
301
302 mutex_lock(&data->config_lock);
303
304 ret = regmap_write(data->regmap, attr->index, regval);
305 if (ret < 0)
306 goto abort;
307
308 ret = count;
309 abort:
310 mutex_unlock(&data->config_lock);
311 return ret;
312 }
313
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip