* drivers/input/misc/iqs7222.c:1404:7: warning: Branch condition evaluates to a garbage value [clang-analyzer-core.uninitialized.Branch]
@ 2022-06-01 10:36 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-06-01 10:36 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 19699 bytes --]
::::::
:::::: Manual check reason: "low confidence static check warning: drivers/input/misc/iqs7222.c:1404:7: warning: Branch condition evaluates to a garbage value [clang-analyzer-core.uninitialized.Branch]"
::::::
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Jeff LaBundy <jeff@labundy.com>
CC: Dmitry Torokhov <dmitry.torokhov@gmail.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 700170bf6b4d773e328fa54ebb70ba444007c702
commit: e505edaedcb9e7d16eefddc62d2189afaea0febc Input: add support for Azoteq IQS7222A/B/C
date: 8 weeks ago
:::::: branch date: 10 hours ago
:::::: commit date: 8 weeks ago
config: arm-randconfig-c002-20220531 (https://download.01.org/0day-ci/archive/20220601/202206011834.4jpDoCmK-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project c825abd6b0198fb088d9752f556a70705bc99dfd)
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
# install arm cross compiling tool for clang build
# apt-get install binutils-arm-linux-gnueabi
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e505edaedcb9e7d16eefddc62d2189afaea0febc
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout e505edaedcb9e7d16eefddc62d2189afaea0febc
# save the config file
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
clang-analyzer warnings: (new ones prefixed by >>)
fbuf = list_first_entry_or_null(&sdr->queued_bufs, struct
^
include/linux/list.h:554:28: note: expanded from macro 'list_first_entry_or_null'
struct list_head *pos__ = READ_ONCE(head__->next); \
^
include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
compiletime_assert_rwonce_type(x); \
^
include/asm-generic/rwonce.h:36:21: note: expanded from macro 'compiletime_assert_rwonce_type'
compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
^
include/linux/compiler_types.h:314:28: note: expanded from macro '__native_word'
sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
^
drivers/media/platform/rcar_drif.c:466:9: note: Taking false branch
fbuf = list_first_entry_or_null(&sdr->queued_bufs, struct
^
include/linux/list.h:554:28: note: expanded from macro 'list_first_entry_or_null'
struct list_head *pos__ = READ_ONCE(head__->next); \
^
include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
compiletime_assert_rwonce_type(x); \
^
include/asm-generic/rwonce.h:36:2: note: expanded from macro 'compiletime_assert_rwonce_type'
compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
^
include/linux/compiler_types.h:346:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:334:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:326:3: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^
drivers/media/platform/rcar_drif.c:466:9: note: Loop condition is false. Exiting loop
fbuf = list_first_entry_or_null(&sdr->queued_bufs, struct
^
include/linux/list.h:554:28: note: expanded from macro 'list_first_entry_or_null'
struct list_head *pos__ = READ_ONCE(head__->next); \
^
include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
compiletime_assert_rwonce_type(x); \
^
include/asm-generic/rwonce.h:36:2: note: expanded from macro 'compiletime_assert_rwonce_type'
compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
^
include/linux/compiler_types.h:346:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:334:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:318:2: note: expanded from macro '__compiletime_assert'
do { \
^
drivers/media/platform/rcar_drif.c:466:9: note: Assuming 'pos__' is not equal to 'head__', which participates in a condition later
fbuf = list_first_entry_or_null(&sdr->queued_bufs, struct
^
include/linux/list.h:555:2: note: expanded from macro 'list_first_entry_or_null'
pos__ != head__ ? list_entry(pos__, type, member) : NULL; \
^~~~~~~~~~~~~~~
drivers/media/platform/rcar_drif.c:466:9: note: '?' condition is true
fbuf = list_first_entry_or_null(&sdr->queued_bufs, struct
^
include/linux/list.h:555:2: note: expanded from macro 'list_first_entry_or_null'
pos__ != head__ ? list_entry(pos__, type, member) : NULL; \
^
drivers/media/platform/rcar_drif.c:468:6: note: Assuming 'fbuf' is non-null, which participates in a condition later
if (!fbuf) {
^~~~~
drivers/media/platform/rcar_drif.c:468:2: note: Taking false branch
if (!fbuf) {
^
drivers/media/platform/rcar_drif.c:480:2: note: Returning pointer (loaded from 'fbuf'), which participates in a condition later
return fbuf;
^~~~~~~~~~~
drivers/media/platform/rcar_drif.c:579:9: note: Returning from 'rcar_drif_get_fbuf'
fbuf = rcar_drif_get_fbuf(sdr);
^~~~~~~~~~~~~~~~~~~~~~~
drivers/media/platform/rcar_drif.c:580:7: note: 'fbuf' is non-null
if (!fbuf)
^~~~
drivers/media/platform/rcar_drif.c:580:2: note: Taking false branch
if (!fbuf)
^
drivers/media/platform/rcar_drif.c:583:2: note: Loop condition is true. Entering loop body
for (i = 0; i < RCAR_DRIF_MAX_CHANNEL; i++)
^
drivers/media/platform/rcar_drif.c:583:41: note: The value 1 is assigned to 'i'
for (i = 0; i < RCAR_DRIF_MAX_CHANNEL; i++)
^~~
drivers/media/platform/rcar_drif.c:583:2: note: Loop condition is true. Entering loop body
for (i = 0; i < RCAR_DRIF_MAX_CHANNEL; i++)
^
drivers/media/platform/rcar_drif.c:585:31: note: Access to field 'addr' results in a dereference of an undefined pointer value
i * sdr->hwbuf_size, buf[i]->addr, sdr->hwbuf_size);
^~~~~~~~~~~~
Suppressed 1 warnings (1 with check filters).
2 warnings generated.
>> drivers/input/misc/iqs7222.c:1404:7: warning: Branch condition evaluates to a garbage value [clang-analyzer-core.uninitialized.Branch]
if (error)
^
drivers/input/misc/iqs7222.c:2345:6: note: Assuming 'iqs7222' is non-null
if (!iqs7222)
^~~~~~~~
drivers/input/misc/iqs7222.c:2345:2: note: Taking false branch
if (!iqs7222)
^
drivers/input/misc/iqs7222.c:2352:6: note: Assuming field 'keypad' is non-null
if (!iqs7222->keypad)
^~~~~~~~~~~~~~~~
drivers/input/misc/iqs7222.c:2352:2: note: Taking false branch
if (!iqs7222->keypad)
^
drivers/input/misc/iqs7222.c:2364:2: note: Taking false branch
if (IS_ERR(iqs7222->irq_gpio)) {
^
drivers/input/misc/iqs7222.c:2373:2: note: Taking false branch
if (IS_ERR(iqs7222->reset_gpio)) {
^
drivers/input/misc/iqs7222.c:2381:6: note: 'error' is 0
if (error)
^~~~~
drivers/input/misc/iqs7222.c:2381:2: note: Taking false branch
if (error)
^
drivers/input/misc/iqs7222.c:2385:6: note: 'error' is 0
if (error)
^~~~~
drivers/input/misc/iqs7222.c:2385:2: note: Taking false branch
if (error)
^
drivers/input/misc/iqs7222.c:2388:10: note: Calling 'iqs7222_dev_init'
error = iqs7222_dev_init(iqs7222, READ);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/input/misc/iqs7222.c:1334:6: note: 'error' declared without an initial value
int error, i, j, k;
^~~~~
drivers/input/misc/iqs7222.c:1341:6: note: Assuming 'comms_offset' is 0
if (comms_offset) {
^~~~~~~~~~~~
drivers/input/misc/iqs7222.c:1341:2: note: Taking false branch
if (comms_offset) {
^
drivers/input/misc/iqs7222.c:1357:2: note: Loop condition is true. Entering loop body
for (i = 0; i < IQS7222_NUM_REG_GRPS; i++) {
^
drivers/input/misc/iqs7222.c:1364:7: note: Assuming 'num_col' is 0
if (!num_col)
^~~~~~~~
drivers/input/misc/iqs7222.c:1364:3: note: Taking true branch
if (!num_col)
^
drivers/input/misc/iqs7222.c:1365:4: note: Execution continues on line 1357
continue;
^
drivers/input/misc/iqs7222.c:1357:2: note: Loop condition is true. Entering loop body
for (i = 0; i < IQS7222_NUM_REG_GRPS; i++) {
^
drivers/input/misc/iqs7222.c:1364:7: note: Assuming 'num_col' is not equal to 0
if (!num_col)
^~~~~~~~
drivers/input/misc/iqs7222.c:1364:3: note: Taking false branch
if (!num_col)
^
drivers/input/misc/iqs7222.c:1367:9: note: Calling 'iqs7222_setup'
val = iqs7222_setup(iqs7222, i, 0);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/input/misc/iqs7222.c:1015:2: note: Control jumps to 'case IQS7222_REG_GRP_CYCLE:' @line 1016
switch (reg_grp) {
^
drivers/input/misc/iqs7222.c:1017:3: note: Returning pointer, which participates in a condition later
return iqs7222->cycle_setup[row];
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/input/misc/iqs7222.c:1367:9: note: Returning from 'iqs7222_setup'
val = iqs7222_setup(iqs7222, i, 0);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/input/misc/iqs7222.c:1368:8: note: 'val' is non-null
if (!val)
^~~
drivers/input/misc/iqs7222.c:1368:3: note: Taking false branch
if (!val)
^
drivers/input/misc/iqs7222.c:1371:13: note: Calling 'kcalloc'
val_buf = kcalloc(num_col, sizeof(__le16), GFP_KERNEL);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/slab.h:652:9: note: Calling 'kmalloc_array'
return kmalloc_array(n, size, flags | __GFP_ZERO);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/slab.h:617:2: note: Taking false branch
if (unlikely(check_mul_overflow(n, size, &bytes)))
^
include/linux/slab.h:619:30: note: Left side of '&&' is false
if (__builtin_constant_p(n) && __builtin_constant_p(size))
^
include/linux/slab.h:621:2: note: Returning pointer, which participates in a condition later
return __kmalloc(bytes, flags);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/slab.h:652:9: note: Returning from 'kmalloc_array'
return kmalloc_array(n, size, flags | __GFP_ZERO);
vim +1404 drivers/input/misc/iqs7222.c
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1329
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1330 static int iqs7222_dev_init(struct iqs7222_private *iqs7222, int dir)
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1331 {
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1332 const struct iqs7222_dev_desc *dev_desc = iqs7222->dev_desc;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1333 int comms_offset = dev_desc->comms_offset;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1334 int error, i, j, k;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1335
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1336 /*
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1337 * Take advantage of the stop-bit disable function, if available, to
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1338 * save the trouble of having to reopen a communication window after
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1339 * each burst read or write.
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1340 */
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1341 if (comms_offset) {
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1342 u16 comms_setup;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1343
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1344 error = iqs7222_read_word(iqs7222,
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1345 IQS7222_SYS_SETUP + comms_offset,
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1346 &comms_setup);
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1347 if (error)
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1348 return error;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1349
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1350 error = iqs7222_write_word(iqs7222,
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1351 IQS7222_SYS_SETUP + comms_offset,
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1352 comms_setup | IQS7222_COMMS_HOLD);
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1353 if (error)
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1354 return error;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1355 }
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1356
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1357 for (i = 0; i < IQS7222_NUM_REG_GRPS; i++) {
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1358 int num_row = dev_desc->reg_grps[i].num_row;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1359 int num_col = dev_desc->reg_grps[i].num_col;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1360 u16 reg = dev_desc->reg_grps[i].base;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1361 __le16 *val_buf;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1362 u16 *val;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1363
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1364 if (!num_col)
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1365 continue;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1366
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1367 val = iqs7222_setup(iqs7222, i, 0);
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1368 if (!val)
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1369 continue;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1370
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1371 val_buf = kcalloc(num_col, sizeof(__le16), GFP_KERNEL);
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1372 if (!val_buf)
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1373 return -ENOMEM;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1374
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1375 for (j = 0; j < num_row; j++) {
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1376 switch (dir) {
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1377 case READ:
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1378 error = iqs7222_read_burst(iqs7222, reg,
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1379 val_buf, num_col);
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1380 for (k = 0; k < num_col; k++)
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1381 val[k] = le16_to_cpu(val_buf[k]);
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1382 break;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1383
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1384 case WRITE:
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1385 for (k = 0; k < num_col; k++)
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1386 val_buf[k] = cpu_to_le16(val[k]);
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1387 error = iqs7222_write_burst(iqs7222, reg,
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1388 val_buf, num_col);
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1389 break;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1390
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1391 default:
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1392 error = -EINVAL;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1393 }
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1394
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1395 if (error)
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1396 break;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1397
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1398 reg += IQS7222_REG_OFFSET;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1399 val += iqs7222_max_cols[i];
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1400 }
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1401
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1402 kfree(val_buf);
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1403
e505edaedcb9e7 Jeff LaBundy 2022-04-08 @1404 if (error)
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1405 return error;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1406 }
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1407
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1408 if (comms_offset) {
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1409 u16 comms_setup;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1410
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1411 error = iqs7222_read_word(iqs7222,
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1412 IQS7222_SYS_SETUP + comms_offset,
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1413 &comms_setup);
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1414 if (error)
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1415 return error;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1416
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1417 error = iqs7222_write_word(iqs7222,
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1418 IQS7222_SYS_SETUP + comms_offset,
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1419 comms_setup & ~IQS7222_COMMS_HOLD);
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1420 if (error)
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1421 return error;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1422 }
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1423
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1424 if (dir == READ)
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1425 return 0;
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1426
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1427 return iqs7222_ati_trigger(iqs7222);
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1428 }
e505edaedcb9e7 Jeff LaBundy 2022-04-08 1429
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-06-01 10:36 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-06-01 10:36 drivers/input/misc/iqs7222.c:1404:7: warning: Branch condition evaluates to a garbage value [clang-analyzer-core.uninitialized.Branch] kernel test robot
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.