All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: drivers/pinctrl/qcom/pinctrl-sc8180x.c:1664:16: warning: Access to field 'start' results in a dereference of an undefined pointer value (loaded from variable 'mres') [clang-analyzer-core.NullDereference]
Date: Fri, 21 Jan 2022 13:25:02 +0800	[thread overview]
Message-ID: <202201211317.RYE7ffKa-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 19683 bytes --]

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Shawn Guo <shawn.guo@linaro.org>
CC: Linus Walleij <linus.walleij@linaro.org>
CC: Bjorn Andersson <bjorn.andersson@linaro.org>
CC: Andy Shevchenko <andriy.shevchenko@intel.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   2c271fe77d52a0555161926c232cd5bc07178b39
commit: 6d8d67988b1a2db04d9d6083a729e8abfeb725d7 pinctrl: qcom: sc8180x: add ACPI probe support
date:   10 months ago
:::::: branch date: 14 hours ago
:::::: commit date: 10 months ago
config: arm-randconfig-c002-20220117 (https://download.01.org/0day-ci/archive/20220121/202201211317.RYE7ffKa-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project c10cbb243cafc0cf42c3e922cb29183279444432)
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=6d8d67988b1a2db04d9d6083a729e8abfeb725d7
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 6d8d67988b1a2db04d9d6083a729e8abfeb725d7
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
   include/linux/compiler_types.h:320:2: note: expanded from macro 'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
           ^
   include/linux/compiler_types.h:308:2: note: expanded from macro '_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:300:3: note: expanded from macro '__compiletime_assert'
                   if (!(condition))                                       \
                   ^
   drivers/pci/setup-bus.c:459:2: note: Loop condition is false.  Exiting loop
           list_for_each_entry(dev_res, head, list)
           ^
   include/linux/list.h:628:13: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
                      ^
   include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'
           list_entry((ptr)->next, type, member)
           ^
   include/linux/list.h:511:2: note: expanded from macro 'list_entry'
           container_of(ptr, type, member)
           ^
   note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
   include/linux/compiler_types.h:320:2: note: expanded from macro 'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
           ^
   include/linux/compiler_types.h:308:2: note: expanded from macro '_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:298:2: note: expanded from macro '__compiletime_assert'
           do {                                                            \
           ^
   drivers/pci/setup-bus.c:459:2: note: Loop condition is true.  Entering loop body
           list_for_each_entry(dev_res, head, list)
           ^
   include/linux/list.h:628:2: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
           ^
   drivers/pci/setup-bus.c:460:7: note: Use of memory after it is freed
                   if (dev_res->res->parent)
                       ^~~~~~~~~~~~
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   4 warnings generated.
   Suppressed 4 warnings (4 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   4 warnings generated.
   Suppressed 4 warnings (4 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   7 warnings generated.
   drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c:1562:26: warning: Value stored to 'npcm' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct npcm7xx_pinctrl *npcm = pinctrl_dev_get_drvdata(pctldev);
                                   ^~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c:1562:26: note: Value stored to 'npcm' during its initialization is never read
           struct npcm7xx_pinctrl *npcm = pinctrl_dev_get_drvdata(pctldev);
                                   ^~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c:1590:26: warning: Value stored to 'npcm' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct npcm7xx_pinctrl *npcm = pinctrl_dev_get_drvdata(pctldev);
                                   ^~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c:1590:26: note: Value stored to 'npcm' during its initialization is never read
           struct npcm7xx_pinctrl *npcm = pinctrl_dev_get_drvdata(pctldev);
                                   ^~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
>> drivers/pinctrl/qcom/pinctrl-sc8180x.c:1664:16: warning: Access to field 'start' results in a dereference of an undefined pointer value (loaded from variable 'mres') [clang-analyzer-core.NullDereference]
                   res->start = mres->start + info->offset;
                                ^
   drivers/pinctrl/qcom/pinctrl-sc8180x.c:1692:6: note: Assuming 'soc_data' is non-null
           if (!soc_data)
               ^~~~~~~~~
   drivers/pinctrl/qcom/pinctrl-sc8180x.c:1692:2: note: Taking false branch
           if (!soc_data)
           ^
   drivers/pinctrl/qcom/pinctrl-sc8180x.c:1695:8: note: Calling 'sc8180x_pinctrl_add_tile_resources'
           ret = sc8180x_pinctrl_add_tile_resources(pdev);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pinctrl/qcom/pinctrl-sc8180x.c:1633:19: note: 'mres' declared without an initial value
           struct resource *mres, *nres, *res;
                            ^~~~
   drivers/pinctrl/qcom/pinctrl-sc8180x.c:1640:6: note: Assuming field 'of_node' is null
           if (pdev->dev.of_node)
               ^~~~~~~~~~~~~~~~~
   drivers/pinctrl/qcom/pinctrl-sc8180x.c:1640:2: note: Taking false branch
           if (pdev->dev.of_node)
           ^
   drivers/pinctrl/qcom/pinctrl-sc8180x.c:1645:6: note: Assuming 'nres' is non-null
           if (!nres)
               ^~~~~
   drivers/pinctrl/qcom/pinctrl-sc8180x.c:1645:2: note: Taking false branch
           if (!nres)
           ^
   drivers/pinctrl/qcom/pinctrl-sc8180x.c:1650:14: note: Assuming 'i' is >= field 'num_resources'
           for (i = 0; i < pdev->num_resources; i++) {
                       ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/pinctrl/qcom/pinctrl-sc8180x.c:1650:2: note: Loop condition is false. Execution continues on line 1661
           for (i = 0; i < pdev->num_resources; i++) {
           ^
   drivers/pinctrl/qcom/pinctrl-sc8180x.c:1661:2: note: Loop condition is true.  Entering loop body
           for (i = 0; i < ARRAY_SIZE(sc8180x_tiles); i++, res++) {
           ^
   drivers/pinctrl/qcom/pinctrl-sc8180x.c:1664:16: note: Access to field 'start' results in a dereference of an undefined pointer value (loaded from variable 'mres')
                   res->start = mres->start + info->offset;
                                ^~~~
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   10 warnings generated.
   drivers/md/bcache/btree.c:1921:2: warning: Value stored to 'cur_idx' is never read [clang-analyzer-deadcode.DeadStores]
           cur_idx = prev_idx = 0;
           ^         ~~~~~~~~~~~~
   drivers/md/bcache/btree.c:1921:2: note: Value stored to 'cur_idx' is never read
           cur_idx = prev_idx = 0;
           ^         ~~~~~~~~~~~~
   drivers/md/bcache/btree.c:2278:28: warning: The result of the left shift is undefined because the left operand is negative [clang-analyzer-core.UndefinedBinaryOperatorResult]
                   bkey_copy_key(&n3->key, &MAX_KEY);
                                            ^
   include/uapi/linux/bcache.h:81:24: note: expanded from macro 'MAX_KEY'
   #define MAX_KEY                         KEY(MAX_KEY_INODE, MAX_KEY_OFFSET, 0)
                                               ^~~~~~~~~~~~~
   include/uapi/linux/bcache.h:79:31: note: expanded from macro 'MAX_KEY_INODE'
   #define MAX_KEY_INODE                   (~(~0 << 20))
                                              ~~ ^
   include/uapi/linux/bcache.h:73:51: note: expanded from macro 'KEY'
           .high = (1ULL << 63) | ((__u64) (size) << 20) | (inode),        \
                                                            ^~~~~
   drivers/md/bcache/btree.c:2204:6: note: Calling 'btree_check_reserve'
           if (btree_check_reserve(b, op)) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/md/bcache/btree.c:1178:6: note: Assuming the condition is false
           if (fifo_used(&ca->free[RESERVE_BTREE]) < reserve) {
               ^
   drivers/md/bcache/util.h:162:26: note: expanded from macro 'fifo_used'
   #define fifo_used(fifo)         (((fifo)->back - (fifo)->front) & (fifo)->mask)
                                   ^
   drivers/md/bcache/btree.c:1178:2: note: Taking false branch
           if (fifo_used(&ca->free[RESERVE_BTREE]) < reserve) {
           ^
   drivers/md/bcache/btree.c:1188:9: note: Calling 'mca_cannibalize_lock'
           return mca_cannibalize_lock(b->c, op);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/md/bcache/btree.c:846:13: note: Assuming field 'btree_cache_alloc_lock' is not equal to null
           if (likely(c->btree_cache_alloc_lock == NULL)) {
                      ^
   include/linux/compiler.h:77:40: note: expanded from macro 'likely'
   # define likely(x)      __builtin_expect(!!(x), 1)
                                               ^
   drivers/md/bcache/btree.c:846:2: note: Taking false branch
           if (likely(c->btree_cache_alloc_lock == NULL)) {
           ^
   drivers/md/bcache/btree.c:848:13: note: Assuming field 'btree_cache_alloc_lock' is equal to field 'task'
           } else if (c->btree_cache_alloc_lock != current) {
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/md/bcache/btree.c:848:9: note: Taking false branch
           } else if (c->btree_cache_alloc_lock != current) {

vim +1664 drivers/pinctrl/qcom/pinctrl-sc8180x.c

6d8d67988b1a2db Shawn Guo 2021-03-11  1623  
6d8d67988b1a2db Shawn Guo 2021-03-11  1624  /*
6d8d67988b1a2db Shawn Guo 2021-03-11  1625   * ACPI DSDT has one single memory resource for TLMM, which voilates the
6d8d67988b1a2db Shawn Guo 2021-03-11  1626   * hardware layout of 3 sepearte tiles.  Let's split the memory resource into
6d8d67988b1a2db Shawn Guo 2021-03-11  1627   * 3 named ones, so that msm_pinctrl_probe() can map memory for ACPI in the
6d8d67988b1a2db Shawn Guo 2021-03-11  1628   * same way as for DT probe.
6d8d67988b1a2db Shawn Guo 2021-03-11  1629   */
6d8d67988b1a2db Shawn Guo 2021-03-11  1630  static int sc8180x_pinctrl_add_tile_resources(struct platform_device *pdev)
6d8d67988b1a2db Shawn Guo 2021-03-11  1631  {
6d8d67988b1a2db Shawn Guo 2021-03-11  1632  	int nres_num = pdev->num_resources + ARRAY_SIZE(sc8180x_tiles) - 1;
6d8d67988b1a2db Shawn Guo 2021-03-11  1633  	struct resource *mres, *nres, *res;
6d8d67988b1a2db Shawn Guo 2021-03-11  1634  	int i, ret;
6d8d67988b1a2db Shawn Guo 2021-03-11  1635  
6d8d67988b1a2db Shawn Guo 2021-03-11  1636  	/*
6d8d67988b1a2db Shawn Guo 2021-03-11  1637  	 * DT already has tiles defined properly, so nothing needs to be done
6d8d67988b1a2db Shawn Guo 2021-03-11  1638  	 * for DT probe.
6d8d67988b1a2db Shawn Guo 2021-03-11  1639  	 */
6d8d67988b1a2db Shawn Guo 2021-03-11  1640  	if (pdev->dev.of_node)
6d8d67988b1a2db Shawn Guo 2021-03-11  1641  		return 0;
6d8d67988b1a2db Shawn Guo 2021-03-11  1642  
6d8d67988b1a2db Shawn Guo 2021-03-11  1643  	/* Allocate for new resources */
6d8d67988b1a2db Shawn Guo 2021-03-11  1644  	nres = devm_kzalloc(&pdev->dev, sizeof(*nres) * nres_num, GFP_KERNEL);
6d8d67988b1a2db Shawn Guo 2021-03-11  1645  	if (!nres)
6d8d67988b1a2db Shawn Guo 2021-03-11  1646  		return -ENOMEM;
6d8d67988b1a2db Shawn Guo 2021-03-11  1647  
6d8d67988b1a2db Shawn Guo 2021-03-11  1648  	res = nres;
6d8d67988b1a2db Shawn Guo 2021-03-11  1649  
6d8d67988b1a2db Shawn Guo 2021-03-11  1650  	for (i = 0; i < pdev->num_resources; i++) {
6d8d67988b1a2db Shawn Guo 2021-03-11  1651  		struct resource *r = &pdev->resource[i];
6d8d67988b1a2db Shawn Guo 2021-03-11  1652  
6d8d67988b1a2db Shawn Guo 2021-03-11  1653  		/* Save memory resource and copy others */
6d8d67988b1a2db Shawn Guo 2021-03-11  1654  		if (resource_type(r) == IORESOURCE_MEM)
6d8d67988b1a2db Shawn Guo 2021-03-11  1655  			mres = r;
6d8d67988b1a2db Shawn Guo 2021-03-11  1656  		else
6d8d67988b1a2db Shawn Guo 2021-03-11  1657  			*res++ = *r;
6d8d67988b1a2db Shawn Guo 2021-03-11  1658  	}
6d8d67988b1a2db Shawn Guo 2021-03-11  1659  
6d8d67988b1a2db Shawn Guo 2021-03-11  1660  	/* Append tile memory resources */
6d8d67988b1a2db Shawn Guo 2021-03-11  1661  	for (i = 0; i < ARRAY_SIZE(sc8180x_tiles); i++, res++) {
6d8d67988b1a2db Shawn Guo 2021-03-11  1662  		const struct tile_info *info = &sc8180x_tile_info[i];
6d8d67988b1a2db Shawn Guo 2021-03-11  1663  
6d8d67988b1a2db Shawn Guo 2021-03-11 @1664  		res->start = mres->start + info->offset;
6d8d67988b1a2db Shawn Guo 2021-03-11  1665  		res->end = mres->start + info->offset + info->size - 1;
6d8d67988b1a2db Shawn Guo 2021-03-11  1666  		res->flags = mres->flags;
6d8d67988b1a2db Shawn Guo 2021-03-11  1667  		res->name = sc8180x_tiles[i];
6d8d67988b1a2db Shawn Guo 2021-03-11  1668  
6d8d67988b1a2db Shawn Guo 2021-03-11  1669  		/* Add new MEM to resource tree */
6d8d67988b1a2db Shawn Guo 2021-03-11  1670  		insert_resource(mres->parent, res);
6d8d67988b1a2db Shawn Guo 2021-03-11  1671  	}
6d8d67988b1a2db Shawn Guo 2021-03-11  1672  
6d8d67988b1a2db Shawn Guo 2021-03-11  1673  	/* Remove old MEM from resource tree */
6d8d67988b1a2db Shawn Guo 2021-03-11  1674  	remove_resource(mres);
6d8d67988b1a2db Shawn Guo 2021-03-11  1675  
6d8d67988b1a2db Shawn Guo 2021-03-11  1676  	/* Free old resources and install new ones */
6d8d67988b1a2db Shawn Guo 2021-03-11  1677  	ret = platform_device_add_resources(pdev, nres, nres_num);
6d8d67988b1a2db Shawn Guo 2021-03-11  1678  	if (ret) {
6d8d67988b1a2db Shawn Guo 2021-03-11  1679  		dev_err(&pdev->dev, "failed to add new resources: %d\n", ret);
6d8d67988b1a2db Shawn Guo 2021-03-11  1680  		return ret;
6d8d67988b1a2db Shawn Guo 2021-03-11  1681  	}
6d8d67988b1a2db Shawn Guo 2021-03-11  1682  
6d8d67988b1a2db Shawn Guo 2021-03-11  1683  	return 0;
6d8d67988b1a2db Shawn Guo 2021-03-11  1684  }
6d8d67988b1a2db Shawn Guo 2021-03-11  1685  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

                 reply	other threads:[~2022-01-21  5:25 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=202201211317.RYE7ffKa-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.