public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Viresh Kumar <viresh.kumar@linaro.org>
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
	linux-kernel@vger.kernel.org,
	Bartosz Golaszewski <bgolaszewski@baylibre.com>,
	Linus Walleij <linus.walleij@linaro.org>
Subject: drivers/gpio/gpio-virtio.c:23:8: warning: Excessive padding in 'struct virtio_gpio_line' (58 padding bytes, where 26 is optimal). Optimal fields order: res, rxlen, lock, completion, req, consider reordering the fields or adding explicit padding members [c...
Date: Sun, 3 Jul 2022 08:01:17 +0800	[thread overview]
Message-ID: <202207030712.4FJHaNfk-lkp@intel.com> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   69cb6c6556ad89620547318439d6be8bb1629a5a
commit: 3a29355a22c0275fe864100794fee58a73175d93 gpio: Add virtio-gpio driver
date:   10 months ago
config: arm-randconfig-c002-20220629 (https://download.01.org/0day-ci/archive/20220703/202207030712.4FJHaNfk-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project a9119143a2d1f4d0d0bc1fe0d819e5351b4e0deb)
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=3a29355a22c0275fe864100794fee58a73175d93
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 3a29355a22c0275fe864100794fee58a73175d93
        # 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 >>)
                   ^
   include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
   #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                            ^
   crypto/skcipher.c:354:10: note: Assuming '__UNIQUE_ID___x333' is >= '__UNIQUE_ID___y334'
           bsize = min(walk->stride, max(n, walk->blocksize));
                   ^
   include/linux/minmax.h:45:19: note: expanded from macro 'min'
   #define min(x, y)       __careful_cmp(x, y, <)
                           ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
                   __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
                   __cmp(unique_x, unique_y, op); })
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
   #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                            ^~~~~~~~~~
   crypto/skcipher.c:354:10: note: '?' condition is false
           bsize = min(walk->stride, max(n, walk->blocksize));
                   ^
   include/linux/minmax.h:45:19: note: expanded from macro 'min'
   #define min(x, y)       __careful_cmp(x, y, <)
                           ^
   include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
                   __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
                   ^
   include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
                   __cmp(unique_x, unique_y, op); })
                   ^
   include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
   #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                            ^
   crypto/skcipher.c:358:15: note: Assuming 'n' is < 'bsize'
           if (unlikely(n < bsize)) {
                        ^
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   crypto/skcipher.c:358:2: note: Taking true branch
           if (unlikely(n < bsize)) {
           ^
   crypto/skcipher.c:359:22: note: Field 'total' is < field 'blocksize'
                   if (unlikely(walk->total < walk->blocksize))
                                      ^
   crypto/skcipher.c:359:3: note: Taking true branch
                   if (unlikely(walk->total < walk->blocksize))
                   ^
   crypto/skcipher.c:360:11: note: Calling 'skcipher_walk_done'
                           return skcipher_walk_done(walk, -EINVAL);
                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   crypto/skcipher.c:110:6: note: Assuming 'n' is not equal to 0
           if (!n)
               ^~
   crypto/skcipher.c:110:2: note: Taking false branch
           if (!n)
           ^
   crypto/skcipher.c:113:2: note: Taking false branch
           if (likely(err >= 0)) {
           ^
   crypto/skcipher.c:118:13: note: Assuming the condition is false
           if (likely(!(walk->flags & (SKCIPHER_WALK_PHYS |
                      ^
   include/linux/compiler.h:77:40: note: expanded from macro 'likely'
   # define likely(x)      __builtin_expect(!!(x), 1)
                                               ^
   crypto/skcipher.c:118:2: note: Taking false branch
           if (likely(!(walk->flags & (SKCIPHER_WALK_PHYS |
           ^
   crypto/skcipher.c:124:13: note: Assuming the condition is false
           } else if (walk->flags & SKCIPHER_WALK_DIFF) {
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   crypto/skcipher.c:124:9: note: Taking false branch
           } else if (walk->flags & SKCIPHER_WALK_DIFF) {
                  ^
   crypto/skcipher.c:127:13: note: Assuming the condition is true
           } else if (walk->flags & SKCIPHER_WALK_COPY) {
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   crypto/skcipher.c:127:9: note: Taking true branch
           } else if (walk->flags & SKCIPHER_WALK_COPY) {
                  ^
   crypto/skcipher.c:128:3: note: Calling 'skcipher_map_dst'
                   skcipher_map_dst(walk);
                   ^~~~~~~~~~~~~~~~~~~~~~
   crypto/skcipher.c:67:1: note: Returning without writing to 'walk->page'
   }
   ^
   crypto/skcipher.c:128:3: note: Returning from 'skcipher_map_dst'
                   skcipher_map_dst(walk);
                   ^~~~~~~~~~~~~~~~~~~~~~
   crypto/skcipher.c:129:3: note: Null pointer passed as 2nd argument to memory copy function
                   memcpy(walk->dst.virt.addr, walk->page, n);
                   ^                           ~~~~~~~~~~
   Suppressed 1 warnings (1 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.
   1 warning generated.
   Suppressed 1 warnings (1 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.
   1 warning generated.
>> drivers/gpio/gpio-virtio.c:23:8: warning: Excessive padding in 'struct virtio_gpio_line' (58 padding bytes, where 26 is optimal). Optimal fields order: res, rxlen, lock, completion, req, consider reordering the fields or adding explicit padding members [clang-analyzer-optin.performance.Padding]
   struct virtio_gpio_line {
   ~~~~~~~^~~~~~~~~~~~~~~~~~
   drivers/gpio/gpio-virtio.c:23:8: note: Excessive padding in 'struct virtio_gpio_line' (58 padding bytes, where 26 is optimal). Optimal fields order: res, rxlen, lock, completion, req, consider reordering the fields or adding explicit padding members
   struct virtio_gpio_line {
   ~~~~~~~^~~~~~~~~~~~~~~~~~
   1 warning generated.
   drivers/pwm/core.c:818:13: warning: Access to field 'name' results in a dereference of a null pointer (loaded from variable 'np') [clang-analyzer-core.NullDereference]
                           con_id = np->name;
                                    ^
   drivers/pwm/core.c:1150:6: note: Assuming the condition is true
           if (is_of_node(fwnode))
               ^~~~~~~~~~~~~~~~~~
   drivers/pwm/core.c:1150:2: note: Taking true branch
           if (is_of_node(fwnode))
           ^
   drivers/pwm/core.c:1151:25: note: Assuming the condition is false
                   pwm = of_pwm_get(dev, to_of_node(fwnode), con_id);
                                         ^
   include/linux/of.h:164:3: note: expanded from macro 'to_of_node'
                   is_of_node(__to_of_node_fwnode) ?                       \
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pwm/core.c:1151:25: note: '?' condition is false
                   pwm = of_pwm_get(dev, to_of_node(fwnode), con_id);
                                         ^
   include/linux/of.h:164:3: note: expanded from macro 'to_of_node'
                   is_of_node(__to_of_node_fwnode) ?                       \
                   ^
   drivers/pwm/core.c:1151:25: note: Passing null pointer value via 2nd parameter 'np'
                   pwm = of_pwm_get(dev, to_of_node(fwnode), con_id);
                                         ^
   include/linux/of.h:161:2: note: expanded from macro 'to_of_node'
           ({                                                              \
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pwm/core.c:1151:9: note: Calling 'of_pwm_get'
                   pwm = of_pwm_get(dev, to_of_node(fwnode), con_id);
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pwm/core.c:775:6: note: Assuming 'con_id' is null
           if (con_id) {
               ^~~~~~
   drivers/pwm/core.c:775:2: note: Taking false branch
           if (con_id) {
           ^
   drivers/pwm/core.c:783:6: note: Assuming 'err' is 0
           if (err) {
               ^~~
   drivers/pwm/core.c:783:2: note: Taking false branch
           if (err) {
           ^
   drivers/pwm/core.c:788:25: note: Assuming '__of_fwnode_handle_node' is null
           pc = fwnode_to_pwmchip(of_fwnode_handle(args.np));
                                  ^
   include/linux/of.h:174:3: note: expanded from macro 'of_fwnode_handle'
                   __of_fwnode_handle_node ?                               \
                   ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/pwm/core.c:788:25: note: '?' condition is false
           pc = fwnode_to_pwmchip(of_fwnode_handle(args.np));
                                  ^
   include/linux/of.h:174:3: note: expanded from macro 'of_fwnode_handle'
                   __of_fwnode_handle_node ?                               \
                   ^
   drivers/pwm/core.c:789:2: note: Taking false branch
           if (IS_ERR(pc)) {
           ^
   drivers/pwm/core.c:798:2: note: Taking false branch
           if (IS_ERR(pwm))
           ^
   drivers/pwm/core.c:802:2: note: Taking false branch
           if (IS_ERR(dl)) {
           ^
   drivers/pwm/core.c:814:7: note: 'con_id' is null
           if (!con_id) {
                ^~~~~~
   drivers/pwm/core.c:814:2: note: Taking true branch
           if (!con_id) {
           ^
   drivers/pwm/core.c:817:7: note: 'err' is < 0
                   if (err < 0)
                       ^~~
   drivers/pwm/core.c:817:3: note: Taking true branch
                   if (err < 0)
                   ^
   drivers/pwm/core.c:818:13: note: Access to field 'name' results in a dereference of a null pointer (loaded from variable 'np')
                           con_id = np->name;
                                    ^~
   1 warning generated.
   lib/crypto/chacha20poly1305-selftest.c:9027:7: warning: Value stored to 'total_len' is never read [clang-analyzer-deadcode.DeadStores]
           for (total_len = POLY1305_DIGEST_SIZE; IS_ENABLED(DEBUG_CHACHA20POLY1305_SLOW_CHUNK_TEST)
                ^
   lib/crypto/chacha20poly1305-selftest.c:9027:7: note: Value stored to 'total_len' is never read
   6 warnings generated.
   drivers/video/fbdev/udlfb.c:370:6: warning: Value stored to 'identical' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           int identical = width;
               ^~~~~~~~~   ~~~~~
   drivers/video/fbdev/udlfb.c:370:6: note: Value stored to 'identical' during its initialization is never read
           int identical = width;
               ^~~~~~~~~   ~~~~~
   drivers/video/fbdev/udlfb.c:564:3: warning: Value stored to 'back_start' is never read [clang-analyzer-deadcode.DeadStores]
                   back_start += offset;
                   ^             ~~~~~~
   drivers/video/fbdev/udlfb.c:564:3: note: Value stored to 'back_start' is never read

vim +23 drivers/gpio/gpio-virtio.c

    22	
  > 23	struct virtio_gpio_line {
    24		struct mutex lock; /* Protects line operation */
    25		struct completion completion;
    26		struct virtio_gpio_request req ____cacheline_aligned;
    27		struct virtio_gpio_response res ____cacheline_aligned;
    28		unsigned int rxlen;
    29	};
    30	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

             reply	other threads:[~2022-07-03  0:03 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-03  0:01 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2022-07-02 13:29 drivers/gpio/gpio-virtio.c:23:8: warning: Excessive padding in 'struct virtio_gpio_line' (58 padding bytes, where 26 is optimal). Optimal fields order: res, rxlen, lock, completion, req, consider reordering the fields or adding explicit padding members [c kernel test robot

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=202207030712.4FJHaNfk-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=bgolaszewski@baylibre.com \
    --cc=kbuild-all@lists.01.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=viresh.kumar@linaro.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox