From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: drivers/input/misc/iqs7222.c:1404:7: warning: Branch condition evaluates to a garbage value [clang-analyzer-core.uninitialized.Branch]
Date: Wed, 01 Jun 2022 18:36:20 +0800 [thread overview]
Message-ID: <202206011834.4jpDoCmK-lkp@intel.com> (raw)
[-- 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
reply other threads:[~2022-06-01 10:36 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202206011834.4jpDoCmK-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.