* drivers/net/ethernet/sfc/rx.c:110:3: warning: Value stored to 'n_frags' is never read [clang-analyzer-deadcode.DeadStores]
@ 2021-12-13 11:11 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-12-13 11:11 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 19243 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 2585cf9dfaaddf00b069673f27bb3f8530e2039c
commit: c438a801e0bb2a4db1d3183a9482af891577a281 sfc: Use 'skb_add_rx_frag()' instead of hand coding it
date: 8 months ago
:::::: branch date: 12 hours ago
:::::: commit date: 8 months ago
config: arm-randconfig-c002-20211126 (https://download.01.org/0day-ci/archive/20211213/202112131911.fnc9GPd5-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 5162b558d8c0b542e752b037e72a69d5fd51eb1e)
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=c438a801e0bb2a4db1d3183a9482af891577a281
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout c438a801e0bb2a4db1d3183a9482af891577a281
# 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/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
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/md/dm-raid1.c:852:26: note: Loop condition is false. Exiting loop
struct mirror_set *ms = container_of(work, struct mirror_set,
^
include/linux/kernel.h:709:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
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/md/dm-raid1.c:857:2: note: Loop condition is false. Exiting loop
spin_lock_irqsave(&ms->lock, flags);
^
include/linux/spinlock.h:384:2: note: expanded from macro 'spin_lock_irqsave'
raw_spin_lock_irqsave(spinlock_check(lock), flags); \
^
include/linux/spinlock.h:250:2: note: expanded from macro 'raw_spin_lock_irqsave'
do { \
^
drivers/md/dm-raid1.c:857:2: note: Loop condition is false. Exiting loop
spin_lock_irqsave(&ms->lock, flags);
^
include/linux/spinlock.h:382:43: note: expanded from macro 'spin_lock_irqsave'
#define spin_lock_irqsave(lock, flags) \
^
drivers/md/dm-raid1.c:869:2: note: Calling 'do_writes'
do_writes(ms, &writes);
^~~~~~~~~~~~~~~~~~~~~~
drivers/md/dm-raid1.c:683:42: note: 'this_list' initialized to a null pointer value
struct bio_list sync, nosync, recover, *this_list = NULL;
^~~~~~~~~
drivers/md/dm-raid1.c:688:6: note: Assuming field 'head' is non-null
if (!writes->head)
^~~~~~~~~~~~~
drivers/md/dm-raid1.c:688:2: note: Taking false branch
if (!writes->head)
^
drivers/md/dm-raid1.c:699:2: note: Loop condition is true. Entering loop body
while ((bio = bio_list_pop(writes))) {
^
drivers/md/dm-raid1.c:700:8: note: Assuming the condition is false
if ((bio->bi_opf & REQ_PREFLUSH) ||
^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/md/dm-raid1.c:700:7: note: Left side of '||' is false
if ((bio->bi_opf & REQ_PREFLUSH) ||
^
drivers/md/dm-raid1.c:701:8: note: Assuming the condition is false
(bio_op(bio) == REQ_OP_DISCARD)) {
^
include/linux/blk_types.h:441:2: note: expanded from macro 'bio_op'
((bio)->bi_opf & REQ_OP_MASK)
^
drivers/md/dm-raid1.c:700:3: note: Taking false branch
if ((bio->bi_opf & REQ_PREFLUSH) ||
^
drivers/md/dm-raid1.c:708:7: note: Assuming field 'is_remote_recovering' is null
if (log->type->is_remote_recovering &&
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/md/dm-raid1.c:708:39: note: Left side of '&&' is false
if (log->type->is_remote_recovering &&
^
drivers/md/dm-raid1.c:715:3: note: 'Default' branch taken. Execution continues on line 730
switch (state) {
^
drivers/md/dm-raid1.c:730:16: note: Passing null pointer value via 1st parameter 'bl'
bio_list_add(this_list, bio);
^~~~~~~~~
drivers/md/dm-raid1.c:730:3: note: Calling 'bio_list_add'
bio_list_add(this_list, bio);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/bio.h:615:6: note: Access to field 'tail' results in a dereference of a null pointer (loaded from variable 'bl')
if (bl->tail)
^~
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.
9 warnings generated.
Suppressed 9 warnings (9 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/net/ethernet/sfc/rx.c:110:3: warning: Value stored to 'n_frags' is never read [clang-analyzer-deadcode.DeadStores]
n_frags = 0;
^ ~
drivers/net/ethernet/sfc/rx.c:110:3: note: Value stored to 'n_frags' is never read
n_frags = 0;
^ ~
Suppressed 9 warnings (9 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.
include/linux/log2.h:57:13: warning: The result of the left shift is undefined due to shifting by '32', which is greater or equal to the width of type 'unsigned long' [clang-analyzer-core.UndefinedBinaryOperatorResult]
return 1UL << fls_long(n - 1);
^
drivers/net/ethernet/sfc/rx_common.c:201:16: note: '?' condition is false
entries = max(roundup_pow_of_two(efx->rxq_entries), EFX_MIN_DMAQ_SIZE);
^
include/linux/log2.h:176:2: note: expanded from macro 'roundup_pow_of_two'
__builtin_constant_p(n) ? ( \
^
drivers/net/ethernet/sfc/rx_common.c:201:16: note: Calling '__roundup_pow_of_two'
entries = max(roundup_pow_of_two(efx->rxq_entries), EFX_MIN_DMAQ_SIZE);
^
include/linux/log2.h:180:2: note: expanded from macro 'roundup_pow_of_two'
__roundup_pow_of_two(n) \
^
include/linux/minmax.h:58:33: note: expanded from macro 'max'
#define max(x, y) __careful_cmp(x, y, >)
~~~~~~~~~~~~~~^~~~~~~~
include/linux/minmax.h:44:14: note: expanded from macro '__careful_cmp'
__cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:37:25: note: expanded from macro '__cmp_once'
typeof(x) unique_x = (x); \
^
include/linux/log2.h:57:16: note: Calling 'fls_long'
return 1UL << fls_long(n - 1);
^~~~~~~~~~~~~~~
include/linux/bitops.h:187:2: note: Taking true branch
if (sizeof(l) == 4)
^
include/linux/bitops.h:188:10: note: Calling 'fls'
return fls(l);
^~~~~~
include/asm-generic/bitops/fls.h:15:2: note: 'r' initialized to 32
int r = 32;
^~~~~
include/asm-generic/bitops/fls.h:17:6: note: Assuming 'x' is not equal to 0, which participates in a condition later
if (!x)
^~
include/asm-generic/bitops/fls.h:17:2: note: Taking false branch
if (!x)
^
include/asm-generic/bitops/fls.h:19:6: note: Assuming the condition is false
if (!(x & 0xffff0000u)) {
^~~~~~~~~~~~~~~~~~
include/asm-generic/bitops/fls.h:19:2: note: Taking false branch
if (!(x & 0xffff0000u)) {
^
include/asm-generic/bitops/fls.h:23:6: note: Assuming the condition is false
if (!(x & 0xff000000u)) {
^~~~~~~~~~~~~~~~~~
include/asm-generic/bitops/fls.h:23:2: note: Taking false branch
if (!(x & 0xff000000u)) {
^
include/asm-generic/bitops/fls.h:27:6: note: Assuming the condition is false
if (!(x & 0xf0000000u)) {
^~~~~~~~~~~~~~~~~~
include/asm-generic/bitops/fls.h:27:2: note: Taking false branch
if (!(x & 0xf0000000u)) {
^
include/asm-generic/bitops/fls.h:31:6: note: Assuming the condition is false
if (!(x & 0xc0000000u)) {
^~~~~~~~~~~~~~~~~~
include/asm-generic/bitops/fls.h:31:2: note: Taking false branch
if (!(x & 0xc0000000u)) {
^
include/asm-generic/bitops/fls.h:35:6: note: Assuming the condition is false
if (!(x & 0x80000000u)) {
^~~~~~~~~~~~~~~~~~
include/asm-generic/bitops/fls.h:35:2: note: Taking false branch
if (!(x & 0x80000000u)) {
^
include/asm-generic/bitops/fls.h:39:2: note: Returning the value 32 (loaded from 'r')
return r;
^~~~~~~~
include/linux/bitops.h:188:10: note: Returning from 'fls'
return fls(l);
^~~~~~
include/linux/bitops.h:188:3: note: Returning the value 32
return fls(l);
^~~~~~~~~~~~~
include/linux/log2.h:57:16: note: Returning from 'fls_long'
return 1UL << fls_long(n - 1);
^~~~~~~~~~~~~~~
include/linux/log2.h:57:13: note: The result of the left shift is undefined due to shifting by '32', which is greater or equal to the width of type 'unsigned long'
return 1UL << fls_long(n - 1);
^ ~~~~~~~~~~~~~~~
Suppressed 9 warnings (9 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.
2 warnings generated.
Suppressed 2 warnings (2 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.
vim +/n_frags +110 drivers/net/ethernet/sfc/rx.c
8ceee660aacb29 drivers/net/sfc/rx.c Ben Hutchings 2008-04-27 65
85740cdf0b8422 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-01-29 66 /* Allocate and construct an SKB around page fragments */
97d48a10c670f8 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2013-01-11 67 static struct sk_buff *efx_rx_mk_skb(struct efx_channel *channel,
97d48a10c670f8 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2013-01-11 68 struct efx_rx_buffer *rx_buf,
85740cdf0b8422 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-01-29 69 unsigned int n_frags,
97d48a10c670f8 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2013-01-11 70 u8 *eh, int hdr_len)
97d48a10c670f8 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2013-01-11 71 {
97d48a10c670f8 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2013-01-11 72 struct efx_nic *efx = channel->efx;
97d48a10c670f8 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2013-01-11 73 struct sk_buff *skb;
97d48a10c670f8 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2013-01-11 74
97d48a10c670f8 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2013-01-11 75 /* Allocate an SKB to store the headers */
2ccd0b192534b1 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-11-28 76 skb = netdev_alloc_skb(efx->net_dev,
2ccd0b192534b1 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-11-28 77 efx->rx_ip_align + efx->rx_prefix_size +
2ccd0b192534b1 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-11-28 78 hdr_len);
e4d112e4f95020 drivers/net/ethernet/sfc/rx.c Edward Cree 2014-07-15 79 if (unlikely(skb == NULL)) {
e4d112e4f95020 drivers/net/ethernet/sfc/rx.c Edward Cree 2014-07-15 80 atomic_inc(&efx->n_rx_noskb_drops);
97d48a10c670f8 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2013-01-11 81 return NULL;
e4d112e4f95020 drivers/net/ethernet/sfc/rx.c Edward Cree 2014-07-15 82 }
97d48a10c670f8 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2013-01-11 83
e01b16a7e217a2 drivers/net/ethernet/sfc/rx.c Edward Cree 2016-12-02 84 EFX_WARN_ON_ONCE_PARANOID(rx_buf->len < hdr_len);
97d48a10c670f8 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2013-01-11 85
2ccd0b192534b1 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-11-28 86 memcpy(skb->data + efx->rx_ip_align, eh - efx->rx_prefix_size,
2ccd0b192534b1 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-11-28 87 efx->rx_prefix_size + hdr_len);
2ccd0b192534b1 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-11-28 88 skb_reserve(skb, efx->rx_ip_align + efx->rx_prefix_size);
2ccd0b192534b1 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-11-28 89 __skb_put(skb, hdr_len);
97d48a10c670f8 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2013-01-11 90
85740cdf0b8422 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-01-29 91 /* Append the remaining page(s) onto the frag list */
97d48a10c670f8 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2013-01-11 92 if (rx_buf->len > hdr_len) {
85740cdf0b8422 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-01-29 93 rx_buf->page_offset += hdr_len;
85740cdf0b8422 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-01-29 94 rx_buf->len -= hdr_len;
85740cdf0b8422 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-01-29 95
85740cdf0b8422 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-01-29 96 for (;;) {
c438a801e0bb2a drivers/net/ethernet/sfc/rx.c Christophe JAILLET 2021-04-04 97 skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,
85740cdf0b8422 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-01-29 98 rx_buf->page, rx_buf->page_offset,
c438a801e0bb2a drivers/net/ethernet/sfc/rx.c Christophe JAILLET 2021-04-04 99 rx_buf->len, efx->rx_buffer_truesize);
85740cdf0b8422 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-01-29 100 rx_buf->page = NULL;
c438a801e0bb2a drivers/net/ethernet/sfc/rx.c Christophe JAILLET 2021-04-04 101
85740cdf0b8422 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-01-29 102 if (skb_shinfo(skb)->nr_frags == n_frags)
85740cdf0b8422 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-01-29 103 break;
85740cdf0b8422 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-01-29 104
85740cdf0b8422 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-01-29 105 rx_buf = efx_rx_buf_next(&channel->rx_queue, rx_buf);
85740cdf0b8422 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-01-29 106 }
97d48a10c670f8 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2013-01-11 107 } else {
97d48a10c670f8 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2013-01-11 108 __free_pages(rx_buf->page, efx->rx_buffer_order);
85740cdf0b8422 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-01-29 109 rx_buf->page = NULL;
85740cdf0b8422 drivers/net/ethernet/sfc/rx.c Ben Hutchings 2013-01-29 @110 n_frags = 0;
18e1d2beb6c230 drivers/net/sfc/rx.c Ben Hutchings 2009-10-29 111 }
97d48a10c670f8 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2013-01-11 112
97d48a10c670f8 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2013-01-11 113 /* Move past the ethernet header */
97d48a10c670f8 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2013-01-11 114 skb->protocol = eth_type_trans(skb, efx->net_dev);
97d48a10c670f8 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2013-01-11 115
36763266bbe8a2 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2014-07-22 116 skb_mark_napi_id(skb, &channel->napi_str);
36763266bbe8a2 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2014-07-22 117
97d48a10c670f8 drivers/net/ethernet/sfc/rx.c Alexandre Rames 2013-01-11 118 return skb;
8ceee660aacb29 drivers/net/sfc/rx.c Ben Hutchings 2008-04-27 119 }
8ceee660aacb29 drivers/net/sfc/rx.c Ben Hutchings 2008-04-27 120
:::::: The code at line 110 was first introduced by commit
:::::: 85740cdf0b84224a9fce62dc9150008ef8d6ab4e sfc: Enable RX DMA scattering where possible
:::::: TO: Ben Hutchings <bhutchings@solarflare.com>
:::::: CC: Ben Hutchings <bhutchings@solarflare.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-12-13 11:11 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-13 11:11 drivers/net/ethernet/sfc/rx.c:110:3: warning: Value stored to 'n_frags' is never read [clang-analyzer-deadcode.DeadStores] 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.