CC: [email protected]
CC: [email protected]
CC: [email protected]
TO: James Smart <[email protected]>
CC: "Martin K. Petersen" <[email protected]>
CC: Hannes Reinecke <[email protected]>
CC: Daniel Wagner <[email protected]>
CC: Ram Vegesna <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   4634129ad9fdc89d10b597fc6f8f4336fb61e105
commit: ebc076b3eddc807729bd81f7bc48e798a3ddc477 scsi: elx: efct: Tie into 
kernel Kconfig and build process
date:   7 months ago
:::::: branch date: 17 hours ago
:::::: commit date: 7 months ago
config: x86_64-randconfig-c007-20220101 
(https://download.01.org/0day-ci/archive/20220109/[email protected]/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
c054402170cd8466683a20385befc0523aba3359)
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
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ebc076b3eddc807729bd81f7bc48e798a3ddc477
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout ebc076b3eddc807729bd81f7bc48e798a3ddc477
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 
clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
           while (inlen > 0 && maxout > 0) {
                  ^~~~~~~~~
   fs/nls/nls_base.c:194:9: note: Left side of '&&' is true
   fs/nls/nls_base.c:194:22: note: Assuming 'maxout' is > 0
           while (inlen > 0 && maxout > 0) {
                               ^~~~~~~~~~
   fs/nls/nls_base.c:194:2: note: Loop condition is true.  Entering loop body
           while (inlen > 0 && maxout > 0) {
           ^
   fs/nls/nls_base.c:195:7: note: Calling 'get_utf16'
                   u = get_utf16(*pwcs, endian);
                       ^~~~~~~~~~~~~~~~~~~~~~~~
   fs/nls/nls_base.c:176:2: note: Control jumps to the 'default' case at line 
177
           switch (endian) {
           ^
   fs/nls/nls_base.c:178:3: note: Returning value (loaded from 'c'), which 
participates in a condition later
                   return c;
                   ^~~~~~~~
   fs/nls/nls_base.c:195:7: note: Returning from 'get_utf16'
                   u = get_utf16(*pwcs, endian);
                       ^~~~~~~~~~~~~~~~~~~~~~~~
   fs/nls/nls_base.c:196:7: note: Assuming 'u' is not equal to 0
                   if (!u)
                       ^~
   fs/nls/nls_base.c:196:3: note: Taking false branch
                   if (!u)
                   ^
   fs/nls/nls_base.c:200:7: note: Assuming 'u' is > 127
                   if (u > 0x7f) {
                       ^~~~~~~~
   fs/nls/nls_base.c:200:3: note: Taking true branch
                   if (u > 0x7f) {
                   ^
   fs/nls/nls_base.c:201:8: note: Assuming the condition is false
                           if ((u & SURROGATE_MASK) == SURROGATE_PAIR) {
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/nls/nls_base.c:201:4: note: Taking false branch
                           if ((u & SURROGATE_MASK) == SURROGATE_PAIR) {
                           ^
   fs/nls/nls_base.c:220:4: note: Taking false branch
                           if (size == -1) {
                           ^
   fs/nls/nls_base.c:194:9: note: Assuming 'inlen' is > 0
           while (inlen > 0 && maxout > 0) {
                  ^~~~~~~~~
   fs/nls/nls_base.c:194:9: note: Left side of '&&' is true
   fs/nls/nls_base.c:194:22: note: 'maxout' is > 0
           while (inlen > 0 && maxout > 0) {
                               ^~~~~~
   fs/nls/nls_base.c:194:2: note: Loop condition is true.  Entering loop body
           while (inlen > 0 && maxout > 0) {
           ^
   fs/nls/nls_base.c:195:7: note: Calling 'get_utf16'
                   u = get_utf16(*pwcs, endian);
                       ^~~~~~~~~~~~~~~~~~~~~~~~
   fs/nls/nls_base.c:176:2: note: Control jumps to the 'default' case at line 
177
           switch (endian) {
           ^
   fs/nls/nls_base.c:178:3: note: Returning value (loaded from 'c'), which 
participates in a condition later
                   return c;
                   ^~~~~~~~
   fs/nls/nls_base.c:195:7: note: Returning from 'get_utf16'
                   u = get_utf16(*pwcs, endian);
                       ^~~~~~~~~~~~~~~~~~~~~~~~
   fs/nls/nls_base.c:196:7: note: Assuming 'u' is not equal to 0
                   if (!u)
                       ^~
   fs/nls/nls_base.c:196:3: note: Taking false branch
                   if (!u)
                   ^
   fs/nls/nls_base.c:200:7: note: Assuming 'u' is <= 127
                   if (u > 0x7f) {
                       ^~~~~~~~
   fs/nls/nls_base.c:200:3: note: Taking false branch
                   if (u > 0x7f) {
                   ^
   fs/nls/nls_base.c:227:5: note: Null pointer value stored to 'op'
                           *op++ = (u8) u;
                            ^~~~
   fs/nls/nls_base.c:227:10: note: Dereference of null pointer
                           *op++ = (u8) u;
                           ~~~~~~^~~~~~~~
   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.
   4 warnings generated.
   block/partitions/atari.c:143:5: warning: Value stored to 'part_fmt' is never 
read [clang-analyzer-deadcode.DeadStores]
                                   part_fmt = 2;
                                   ^          ~
   block/partitions/atari.c:143:5: note: Value stored to 'part_fmt' is never 
read
                                   part_fmt = 2;
                                   ^          ~
   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.
   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.
   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.
>> drivers/scsi/elx/libefc/efc_device.c:51:2: warning: Value stored to 'efc' is 
>> never read [clang-analyzer-deadcode.DeadStores]
           efc = node->efc;
           ^     ~~~~~~~~~
   drivers/scsi/elx/libefc/efc_device.c:51:2: note: Value stored to 'efc' is 
never read
           efc = node->efc;
           ^     ~~~~~~~~~
   Suppressed 4 warnings (3 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.
   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.
   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.
   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.
   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.
   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.
   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.
   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.
   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.
   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.
   fs/binfmt_elf.c:1293:3: warning: Value stored to 'error' is never read 
[clang-analyzer-deadcode.DeadStores]
                   error = vm_mmap(NULL, 0, PAGE_SIZE, PROT_READ | PROT_EXEC,
                   ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/binfmt_elf.c:1293:3: note: Value stored to 'error' is never read
                   error = vm_mmap(NULL, 0, PAGE_SIZE, PROT_READ | PROT_EXEC,
                   ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   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.
   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.
   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.
   5 warnings generated.
   fs/fhandle.c:232:9: warning: 1st function call argument is an uninitialized 
value [clang-analyzer-core.CallAndMessage]
           file = file_open_root(path.dentry, path.mnt, "", open_flag, 0);
                  ^
   fs/fhandle.c:256:1: note: Calling '__se_sys_open_by_handle_at'
   SYSCALL_DEFINE3(open_by_handle_at, int, mountdirfd,
   ^
   include/linux/syscalls.h:218:36: note: expanded from macro 'SYSCALL_DEFINE3'
   #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/syscalls.h:227:2: note: expanded from macro 'SYSCALL_DEFINEx'
           __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/include/asm/syscall_wrapper.h:231:2: note: expanded from macro 
'__SYSCALL_DEFINEx'
           __X64_SYS_STUBx(x, name, __VA_ARGS__)                           \
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/include/asm/syscall_wrapper.h:97:2: note: expanded from macro 
'__X64_SYS_STUBx'
           __SYS_STUBx(x64, sys##name,                                     \
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/include/asm/syscall_wrapper.h:79:10: note: expanded from macro 
'__SYS_STUBx'
                   return __se_##name(__VA_ARGS__);                        \
                          ^~~~~~~~~~~~~~~~~~~~~~~~
   note: expanded from here
   fs/fhandle.c:256:1: note: Calling '__do_sys_open_by_handle_at'
   SYSCALL_DEFINE3(open_by_handle_at, int, mountdirfd,
   ^
   include/linux/syscalls.h:218:36: note: expanded from macro 'SYSCALL_DEFINE3'
   #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/syscalls.h:227:2: note: expanded from macro 'SYSCALL_DEFINEx'
           __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/x86/include/asm/syscall_wrapper.h:235:14: note: expanded from macro 
'__SYSCALL_DEFINEx'
                   long ret = __do_sys##name(__MAP(x,__SC_CAST,__VA_ARGS__));\
                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   note: expanded from here
   fs/fhandle.c:262:2: note: Taking true branch
           if (force_o_largefile())
           ^
   fs/fhandle.c:265:8: note: Calling 'do_handle_open'
           ret = do_handle_open(mountdirfd, handle, flags);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/fhandle.c:223:11: note: Calling 'handle_to_path'
           retval = handle_to_path(mountdirfd, ufh, &path);
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
   drivers/net/ethernet/broadcom/b44.c:568:19: note: 'remote_adv' declared 
without an initial value
                           u32 local_adv, remote_adv;
                                          ^~~~~~~~~~
   drivers/net/ethernet/broadcom/b44.c:570:8: note: Assuming the condition is 
false
                           if (bp->flags & B44_FLAG_FULL_DUPLEX)
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/b44.c:570:4: note: Taking false branch
                           if (bp->flags & B44_FLAG_FULL_DUPLEX)
                           ^
   drivers/net/ethernet/broadcom/b44.c:576:8: note: Assuming the condition is 
true
                           if (!(bp->flags & B44_FLAG_FORCE_LINK) &&
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/b44.c:576:8: note: Left side of '&&' is true
   drivers/net/ethernet/broadcom/b44.c:577:9: note: Calling 'b44_readphy'
                               !b44_readphy(bp, MII_ADVERTISE, &local_adv) &&
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/b44.c:287:6: note: Assuming the condition is 
false
           if (bp->flags & B44_FLAG_EXTERNAL_PHY)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/b44.c:287:2: note: Taking false branch
           if (bp->flags & B44_FLAG_EXTERNAL_PHY)
           ^
   drivers/net/ethernet/broadcom/b44.c:290:2: note: Returning value, which 
participates in a condition later
           return __b44_readphy(bp, bp->phy_addr, reg, val);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/b44.c:577:9: note: Returning from 'b44_readphy'
                               !b44_readphy(bp, MII_ADVERTISE, &local_adv) &&
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/b44.c:577:8: note: Assuming the condition is 
true
                               !b44_readphy(bp, MII_ADVERTISE, &local_adv) &&
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/b44.c:576:8: note: Left side of '&&' is true
                           if (!(bp->flags & B44_FLAG_FORCE_LINK) &&
                               ^
   drivers/net/ethernet/broadcom/b44.c:578:9: note: Calling 'b44_readphy'
                               !b44_readphy(bp, MII_LPA, &remote_adv))
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/b44.c:287:6: note: Assuming the condition is 
true
           if (bp->flags & B44_FLAG_EXTERNAL_PHY)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/b44.c:287:2: note: Taking true branch
           if (bp->flags & B44_FLAG_EXTERNAL_PHY)
           ^
   drivers/net/ethernet/broadcom/b44.c:288:3: note: Returning without writing 
to '*val'
                   return 0;
                   ^
   drivers/net/ethernet/broadcom/b44.c:288:3: note: Returning zero, which 
participates in a condition later
                   return 0;
                   ^~~~~~~~
   drivers/net/ethernet/broadcom/b44.c:578:9: note: Returning from 'b44_readphy'
                               !b44_readphy(bp, MII_LPA, &remote_adv))
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/b44.c:576:4: note: Taking true branch
                           if (!(bp->flags & B44_FLAG_FORCE_LINK) &&
                           ^
   drivers/net/ethernet/broadcom/b44.c:579:5: note: 3rd function call argument 
is an uninitialized value
                                   b44_set_flow_ctrl(bp, local_adv, remote_adv);
                                   ^                                ~~~~~~~~~~
   drivers/net/ethernet/broadcom/b44.c:1816:11: warning: The left operand of 
'&' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult]
           if (bmcr & BMCR_ANENABLE) {
               ~~~~ ^
   drivers/net/ethernet/broadcom/b44.c:1809:2: note: 'bmcr' declared without an 
initial value
           u32 bmcr;
           ^~~~~~~~
   drivers/net/ethernet/broadcom/b44.c:1813:2: note: Calling 'b44_readphy'
           b44_readphy(bp, MII_BMCR, &bmcr);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/b44.c:287:6: note: Assuming the condition is 
true
           if (bp->flags & B44_FLAG_EXTERNAL_PHY)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/b44.c:287:2: note: Taking true branch
           if (bp->flags & B44_FLAG_EXTERNAL_PHY)
           ^
   drivers/net/ethernet/broadcom/b44.c:288:3: note: Returning without writing 
to '*val'
                   return 0;
                   ^
   drivers/net/ethernet/broadcom/b44.c:1813:2: note: Returning from 
'b44_readphy'
           b44_readphy(bp, MII_BMCR, &bmcr);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/b44.c:1814:2: note: Calling 'b44_readphy'
           b44_readphy(bp, MII_BMCR, &bmcr);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/b44.c:287:2: note: Taking true branch
           if (bp->flags & B44_FLAG_EXTERNAL_PHY)
           ^
   drivers/net/ethernet/broadcom/b44.c:288:3: note: Returning without writing 
to '*val'
                   return 0;
                   ^
   drivers/net/ethernet/broadcom/b44.c:1814:2: note: Returning from 
'b44_readphy'
           b44_readphy(bp, MII_BMCR, &bmcr);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/b44.c:1816:11: note: The left operand of '&' 
is a garbage value
           if (bmcr & BMCR_ANENABLE) {
               ~~~~ ^
   Suppressed 8 warnings (7 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.
   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.
>> drivers/scsi/elx/efct/efct_hw.c:1518:3: warning: Value stored to 'ctx' is 
>> never read [clang-analyzer-deadcode.DeadStores]
                   ctx = list_first_entry(&hw->cmd_head,
                   ^
   drivers/scsi/elx/efct/efct_hw.c:1518:3: note: Value stored to 'ctx' is never 
read
   Suppressed 5 warnings (4 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.
>> drivers/scsi/elx/efct/efct_hw_queues.c:196:23: warning: Access to field 'hw' 
>> results in a dereference of an undefined pointer value 
>> [clang-analyzer-core.NullDereference]
           struct efct_hw *hw = eqs[0]->hw;
                                ^
   drivers/scsi/elx/efct/efct_hw_queues.c:32:14: note: Assuming 'i' is >= field 
'n_eq'
           for (i = 0; i < hw->config.n_eq; i++) {
                       ^~~~~~~~~~~~~~~~~~~
   drivers/scsi/elx/efct/efct_hw_queues.c:32:2: note: Loop condition is false. 
Execution continues on line 73
           for (i = 0; i < hw->config.n_eq; i++) {
           ^
   drivers/scsi/elx/efct/efct_hw_queues.c:73:6: note: Calling 
'efct_hw_new_cq_set'
           if (efct_hw_new_cq_set(eqs, cqs, i, 
hw->num_qentries[SLI4_QTYPE_CQ])) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/elx/efct/efct_hw_queues.c:196:23: note: Access to field 'hw' 
results in a dereference of an undefined pointer value
           struct efct_hw *hw = eqs[0]->hw;
                                ^~~~~~~~~~
   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.
   21 warnings generated.
>> drivers/scsi/elx/efct/efct_lio.c:1156:15: warning: Value stored to 'efct' 
>> during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct efct *efct = nport->efc->base;
                        ^~~~   ~~~~~~~~~~~~~~~~
   drivers/scsi/elx/efct/efct_lio.c:1156:15: note: Value stored to 'efct' 
during its initialization is never read
           struct efct *efct = nport->efc->base;
                        ^~~~   ~~~~~~~~~~~~~~~~
>> drivers/scsi/elx/efct/efct_lio.c:1366:3: warning: Value stored to 'ddir' is 
>> never read [clang-analyzer-deadcode.DeadStores]
                   ddir = "FROM_INITIATOR";
                   ^      ~~~~~~~~~~~~~~~~
   drivers/scsi/elx/efct/efct_lio.c:1366:3: note: Value stored to 'ddir' is 
never read
                   ddir = "FROM_INITIATOR";
                   ^      ~~~~~~~~~~~~~~~~
   drivers/scsi/elx/efct/efct_lio.c:1370:3: warning: Value stored to 'ddir' is 
never read [clang-analyzer-deadcode.DeadStores]
                   ddir = "TO_INITIATOR";
                   ^      ~~~~~~~~~~~~~~
   drivers/scsi/elx/efct/efct_lio.c:1370:3: note: Value stored to 'ddir' is 
never read
                   ddir = "TO_INITIATOR";
                   ^      ~~~~~~~~~~~~~~
   drivers/scsi/elx/efct/efct_lio.c:1374:3: warning: Value stored to 'ddir' is 
never read [clang-analyzer-deadcode.DeadStores]
                   ddir = "BIDIR";
                   ^      ~~~~~~~
   drivers/scsi/elx/efct/efct_lio.c:1374:3: note: Value stored to 'ddir' is 
never read
                   ddir = "BIDIR";
                   ^      ~~~~~~~
   drivers/scsi/elx/efct/efct_lio.c:1378:3: warning: Value stored to 'ddir' is 
never read [clang-analyzer-deadcode.DeadStores]
                   ddir = "NONE";
                   ^      ~~~~~~
   drivers/scsi/elx/efct/efct_lio.c:1378:3: note: Value stored to 'ddir' is 
never read
                   ddir = "NONE";
                   ^      ~~~~~~
   drivers/scsi/elx/efct/efct_lio.c:1521:1: warning: Access to field 
'generate_node_acls' results in a dereference of a null pointer (loaded from 
variable 'a') [clang-analyzer-core.NullDereference]
   DEF_EFCT_TPG_ATTRIB(generate_node_acls);
   ^
   drivers/scsi/elx/efct/efct_lio.c:1515:10: note: expanded from macro 
'DEF_EFCT_TPG_ATTRIB'
           a->name = val;                                                    \
           ~       ^
   drivers/scsi/elx/efct/efct_lio.c:1521:1: note: Left side of '&&' is false
   DEF_EFCT_TPG_ATTRIB(generate_node_acls);
   ^
   drivers/scsi/elx/efct/efct_lio.c:1498:29: note: expanded from macro 
'DEF_EFCT_TPG_ATTRIB'
           struct efct_lio_tpg *tpg = container_of(se_tpg,                   \
                                      ^
   include/linux/kernel.h:704:61: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
                                                                      ^
   drivers/scsi/elx/efct/efct_lio.c:1521:1: note: Taking false branch
   DEF_EFCT_TPG_ATTRIB(generate_node_acls);
   ^
   drivers/scsi/elx/efct/efct_lio.c:1498:29: note: expanded from macro 
'DEF_EFCT_TPG_ATTRIB'
           struct efct_lio_tpg *tpg = container_of(se_tpg,                   \
                                      ^
   include/linux/kernel.h:704: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:328:2: note: expanded from macro 
'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
           ^
   include/linux/compiler_types.h:316:2: note: expanded from macro 
'_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:308:3: note: expanded from macro 
'__compiletime_assert'
                   if (!(condition))                                       \
                   ^
   drivers/scsi/elx/efct/efct_lio.c:1521:1: note: Loop condition is false.  
Exiting loop
   DEF_EFCT_TPG_ATTRIB(generate_node_acls);
   ^
   drivers/scsi/elx/efct/efct_lio.c:1498:29: note: expanded from macro 
'DEF_EFCT_TPG_ATTRIB'
           struct efct_lio_tpg *tpg = container_of(se_tpg,                   \
                                      ^
   include/linux/kernel.h:704: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:328:2: note: expanded from macro 
'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
           ^
   include/linux/compiler_types.h:316:2: note: expanded from macro 
'_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:306:2: note: expanded from macro 
'__compiletime_assert'
           do {                                                            \
           ^
   drivers/scsi/elx/efct/efct_lio.c:1521:1: note: 'tpg' initialized to a null 
pointer value
   DEF_EFCT_TPG_ATTRIB(generate_node_acls);
   ^
   drivers/scsi/elx/efct/efct_lio.c:1498:2: note: expanded from macro 
'DEF_EFCT_TPG_ATTRIB'
           struct efct_lio_tpg *tpg = container_of(se_tpg,                   \
           ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/elx/efct/efct_lio.c:1521:1: note: 'a' initialized to a null 
pointer value
   DEF_EFCT_TPG_ATTRIB(generate_node_acls);
   ^
   drivers/scsi/elx/efct/efct_lio.c:1500:2: note: expanded from macro 
'DEF_EFCT_TPG_ATTRIB'
           struct efct_lio_tpg_attrib *a = &tpg->tpg_attrib;                 \
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/elx/efct/efct_lio.c:1521:1: note: Assuming 'ret' is >= 0
   DEF_EFCT_TPG_ATTRIB(generate_node_acls);
   ^
   drivers/scsi/elx/efct/efct_lio.c:1505:6: note: expanded from macro 
'DEF_EFCT_TPG_ATTRIB'
           if (ret < 0) {                                                    \
               ^~~~~~~
   drivers/scsi/elx/efct/efct_lio.c:1521:1: note: Taking false branch
   DEF_EFCT_TPG_ATTRIB(generate_node_acls);
--
   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.
   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.
   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.
   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.
   18 warnings generated.
   drivers/media/tuners/e4000.c:12:21: warning: Value stored to 'client' during 
its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:12:21: note: Value stored to 'client' during 
its initialization is never read
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:80:21: warning: Value stored to 'client' during 
its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:80:21: note: Value stored to 'client' during 
its initialization is never read
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:99:21: warning: Value stored to 'client' during 
its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:99:21: note: Value stored to 'client' during 
its initialization is never read
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:298:21: warning: Value stored to 'client' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:298:21: note: Value stored to 'client' during 
its initialization is never read
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:313:21: warning: Value stored to 'client' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:313:21: note: Value stored to 'client' during 
its initialization is never read
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:322:21: warning: Value stored to 'client' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:322:21: note: Value stored to 'client' during 
its initialization is never read
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:333:21: warning: Value stored to 'client' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:333:21: note: Value stored to 'client' during 
its initialization is never read
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:347:21: warning: Value stored to 'client' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:347:21: note: Value stored to 'client' during 
its initialization is never read
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:377:21: warning: Value stored to 'client' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:377:21: note: Value stored to 'client' during 
its initialization is never read
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:413:21: warning: Value stored to 'client' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:413:21: note: Value stored to 'client' during 
its initialization is never read
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:445:21: warning: Value stored to 'client' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:445:21: note: Value stored to 'client' during 
its initialization is never read
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:484:21: warning: Value stored to 'client' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:484:21: note: Value stored to 'client' during 
its initialization is never read
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:503:21: warning: Value stored to 'client' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:503:21: note: Value stored to 'client' during 
its initialization is never read
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:525:21: warning: Value stored to 'client' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   drivers/media/tuners/e4000.c:525:21: note: Value stored to 'client' during 
its initialization is never read
           struct i2c_client *client = dev->client;
                              ^~~~~~   ~~~~~~~~~~~
   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.
>> drivers/scsi/elx/efct/efct_unsol.c:147:27: warning: Value stored to 'fchdr' 
>> during its initialization is never read [clang-analyzer-deadcode.DeadStores]
                   struct fc_frame_header  *fchdr = seq->header->dma.virt;
                                            ^~~~~   ~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/elx/efct/efct_unsol.c:147:27: note: Value stored to 'fchdr' 
during its initialization is never read
                   struct fc_frame_header  *fchdr = seq->header->dma.virt;
                                            ^~~~~   ~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/elx/efct/efct_unsol.c:320:15: warning: Value stored to 'efct' 
>> during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct efct *efct = node->efct;
                        ^~~~   ~~~~~~~~~~
   drivers/scsi/elx/efct/efct_unsol.c:320:15: note: Value stored to 'efct' 
during its initialization is never read
           struct efct *efct = node->efct;
                        ^~~~   ~~~~~~~~~~
   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.
   5 warnings generated.
>> drivers/scsi/elx/libefc/efc_cmds.c:36:14: warning: Value stored to 'efc' 
>> during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct efc *efc = nport->efc;
                       ^~~   ~~~~~~~~~~
   drivers/scsi/elx/libefc/efc_cmds.c:36:14: note: Value stored to 'efc' during 
its initialization is never read
           struct efc *efc = nport->efc;
                       ^~~   ~~~~~~~~~~
   drivers/scsi/elx/libefc/efc_cmds.c:314:14: warning: Value stored to 'efc' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct efc *efc = domain->efc;
                       ^~~   ~~~~~~~~~~~
   drivers/scsi/elx/libefc/efc_cmds.c:314:14: note: Value stored to 'efc' 
during its initialization is never read
           struct efc *efc = domain->efc;
                       ^~~   ~~~~~~~~~~~
   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.
   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.
>> drivers/scsi/elx/libefc/efc_fabric.c:77:14: warning: Value stored to 'efc' 
>> during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct efc *efc = node->efc;
                       ^~~   ~~~~~~~~~
   drivers/scsi/elx/libefc/efc_fabric.c:77:14: note: Value stored to 'efc' 
during its initialization is never read
           struct efc *efc = node->efc;
                       ^~~   ~~~~~~~~~
>> drivers/scsi/elx/libefc/efc_fabric.c:398:19: warning: Value stored to 'node' 
>> during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct efc_node *node = ctx->app;
                            ^~~~   ~~~~~~~~
   drivers/scsi/elx/libefc/efc_fabric.c:398:19: note: Value stored to 'node' 
during its initialization is never read
           struct efc_node *node = ctx->app;
                            ^~~~   ~~~~~~~~
   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.
   10 warnings generated.
   Suppressed 10 warnings (10 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.
   14 warnings generated.
   drivers/net/ethernet/qlogic/qed/qed_cxt.c:397:13: warning: Division by zero 
[clang-analyzer-core.DivideZero]
           *p_line += DIV_ROUND_UP(p_blk->total_size, p_blk->real_size_in_page);
                      ^
   include/linux/math.h:36:22: note: expanded from macro 'DIV_ROUND_UP'
   #define DIV_ROUND_UP __KERNEL_DIV_ROUND_UP
                        ^
   include/uapi/linux/const.h:34:54: note: expanded from macro 
'__KERNEL_DIV_ROUND_UP'
   #define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
                                                        ^
   drivers/net/ethernet/qlogic/qed/qed_cxt.c:480:2: note: Assuming field 
'dp_level' is > QED_LEVEL_VERBOSE
           DP_VERBOSE(p_hwfn, QED_MSG_ILT,
           ^
   include/linux/qed/qed_if.h:1212:17: note: expanded from macro 'DP_VERBOSE'
                   if (unlikely(((cdev)->dp_level <= QED_LEVEL_VERBOSE) && \
                       ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   drivers/net/ethernet/qlogic/qed/qed_cxt.c:480:2: note: Left side of '&&' is 
false
           DP_VERBOSE(p_hwfn, QED_MSG_ILT,
           ^
   include/linux/qed/qed_if.h:1212:56: note: expanded from macro 'DP_VERBOSE'
                   if (unlikely(((cdev)->dp_level <= QED_LEVEL_VERBOSE) && \
                                                                        ^
   drivers/net/ethernet/qlogic/qed/qed_cxt.c:480:2: note: Taking false branch
           DP_VERBOSE(p_hwfn, QED_MSG_ILT,
           ^
   include/linux/qed/qed_if.h:1212:3: note: expanded from macro 'DP_VERBOSE'
                   if (unlikely(((cdev)->dp_level <= QED_LEVEL_VERBOSE) && \
                   ^
   drivers/net/ethernet/qlogic/qed/qed_cxt.c:480:2: note: Loop condition is 
false.  Exiting loop
           DP_VERBOSE(p_hwfn, QED_MSG_ILT,
           ^
   include/linux/qed/qed_if.h:1211:2: note: expanded from macro 'DP_VERBOSE'
           do {                                                            \
           ^
   drivers/net/ethernet/qlogic/qed/qed_cxt.c:495:10: note: Calling 
'qed_cxt_set_blk'
           p_blk = qed_cxt_set_blk(&p_cli->pf_blks[CDUC_BLK]);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/qlogic/qed/qed_cxt.c:439:2: note: Returning without 
writing to 'p_blk->real_size_in_page'
           return p_blk;
           ^
   drivers/net/ethernet/qlogic/qed/qed_cxt.c:495:10: note: Returning from 
'qed_cxt_set_blk'
           p_blk = qed_cxt_set_blk(&p_cli->pf_blks[CDUC_BLK]);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/qlogic/qed/qed_cxt.c:499:2: note: Calling 
'qed_ilt_cli_blk_fill'
           qed_ilt_cli_blk_fill(p_cli, p_blk, curr_line,
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/qlogic/qed/qed_cxt.c:375:13: note: Field 'total_size' 
is 0
           if (p_blk->total_size)
                      ^
   drivers/net/ethernet/qlogic/qed/qed_cxt.c:375:2: note: Taking false branch
           if (p_blk->total_size)
           ^
   drivers/net/ethernet/qlogic/qed/qed_cxt.c:379:2: note: The value 0 is 
assigned to field 'real_size_in_page'
           p_blk->real_size_in_page = 0;
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/qlogic/qed/qed_cxt.c:380:6: note: Assuming 'elem_size' 
is 0
           if (elem_size)
               ^~~~~~~~~
   drivers/net/ethernet/qlogic/qed/qed_cxt.c:380:2: note: Taking false branch
           if (elem_size)
           ^
   drivers/net/ethernet/qlogic/qed/qed_cxt.c:499:2: note: Returning from 
'qed_ilt_cli_blk_fill'
           qed_ilt_cli_blk_fill(p_cli, p_blk, curr_line,
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/qlogic/qed/qed_cxt.c:502:2: note: Calling 
'qed_ilt_cli_adv_line'
           qed_ilt_cli_adv_line(p_hwfn, p_cli, p_blk, &curr_line, ILT_CLI_CDUC);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/qlogic/qed/qed_cxt.c:390:6: note: Assuming field 
'total_size' is not equal to 0
           if (!p_blk->total_size)
               ^~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/qlogic/qed/qed_cxt.c:390:2: note: Taking false branch
           if (!p_blk->total_size)
           ^
   drivers/net/ethernet/qlogic/qed/qed_cxt.c:393:6: note: Assuming field 
'active' is true
           if (!p_cli->active)
               ^~~~~~~~~~~~~~
   drivers/net/ethernet/qlogic/qed/qed_cxt.c:393:2: note: Taking false branch
           if (!p_cli->active)
           ^
   drivers/net/ethernet/qlogic/qed/qed_cxt.c:397:13: note: Division by zero
           *p_line += DIV_ROUND_UP(p_blk->total_size, p_blk->real_size_in_page);
                      ^
   include/linux/math.h:36:22: note: expanded from macro 'DIV_ROUND_UP'
   #define DIV_ROUND_UP __KERNEL_DIV_ROUND_UP
                        ^
   include/uapi/linux/const.h:34:54: note: expanded from macro 
'__KERNEL_DIV_ROUND_UP'
   #define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
--
   13 warnings generated.
   drivers/scsi/isci/port.c:201:24: warning: Assigned value is garbage or 
undefined [clang-analyzer-core.uninitialized.Assign]
                   attached_sas_address = properties.remote.sas_address.high;
                                        ^
   drivers/scsi/isci/port.c:1317:2: note: Control jumps to 'case 
SCI_PORT_SUB_WAITING:'  at line 1318
           switch (state) {
           ^
   drivers/scsi/isci/port.c:1322:3: note: Calling 'sci_port_activate_phy'
                   sci_port_activate_phy(iport, iphy, PF_NOTIFY|PF_RESUME);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/isci/port.c:629:6: note: Assuming field 'protocol' is equal to 
SAS_PROTOCOL_SATA
           if (iphy->protocol != SAS_PROTOCOL_SATA && (flags & PF_RESUME))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/isci/port.c:629:42: note: Left side of '&&' is false
           if (iphy->protocol != SAS_PROTOCOL_SATA && (flags & PF_RESUME))
                                                   ^
   drivers/scsi/isci/port.c:636:2: note: Taking true branch
           if (flags & PF_NOTIFY)
           ^
   drivers/scsi/isci/port.c:637:3: note: Calling 'isci_port_link_up'
                   isci_port_link_up(ihost, iport, iphy);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/isci/port.c:180:2: note: Taking false branch
           dev_dbg(&isci_host->pdev->dev,
           ^
   include/linux/dev_printk.h:130:2: note: expanded from macro 'dev_dbg'
           if (0)                                                          \
           ^
   drivers/scsi/isci/port.c:184:2: note: Loop condition is false.  Exiting loop
           spin_lock_irqsave(&iphy->sas_phy.frame_rcvd_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/scsi/isci/port.c:184:2: note: Loop condition is false.  Exiting loop
           spin_lock_irqsave(&iphy->sas_phy.frame_rcvd_lock, flags);
           ^
   include/linux/spinlock.h:382:43: note: expanded from macro 
'spin_lock_irqsave'
   #define spin_lock_irqsave(lock, flags)                          \
                                                                   ^
   drivers/scsi/isci/port.c:186:2: note: Calling 'sci_port_get_properties'
           sci_port_get_properties(iport, &properties);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/isci/port.c:131:7: note: 'iport' is non-null
           if (!iport || iport->logical_port_index == SCIC_SDS_DUMMY_PORT)
                ^~~~~
   drivers/scsi/isci/port.c:131:6: note: Left side of '||' is false
           if (!iport || iport->logical_port_index == SCIC_SDS_DUMMY_PORT)
               ^
   drivers/scsi/isci/port.c:131:16: note: Assuming field 'logical_port_index' 
is equal to SCIC_SDS_DUMMY_PORT
           if (!iport || iport->logical_port_index == SCIC_SDS_DUMMY_PORT)
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/isci/port.c:131:2: note: Taking true branch
           if (!iport || iport->logical_port_index == SCIC_SDS_DUMMY_PORT)
           ^
   drivers/scsi/isci/port.c:132:3: note: Returning without writing to 
'prop->remote.sas_address.high'
                   return SCI_FAILURE_INVALID_PORT;
                   ^
   drivers/scsi/isci/port.c:186:2: note: Returning from 
'sci_port_get_properties'
           sci_port_get_properties(iport, &properties);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/isci/port.c:188:6: note: Assuming field 'protocol' is equal to 
SAS_PROTOCOL_SATA
           if (iphy->protocol == SAS_PROTOCOL_SATA) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/isci/port.c:188:2: note: Taking true branch
           if (iphy->protocol == SAS_PROTOCOL_SATA) {
           ^
   drivers/scsi/isci/port.c:201:24: note: Assigned value is garbage or undefined
                   attached_sas_address = properties.remote.sas_address.high;
                                        ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/isci/port.c:969:20: warning: Value stored to 'ihost' during its 
initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct isci_host *ihost = iport->owning_controller;
                             ^~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/isci/port.c:969:20: note: Value stored to 'ihost' during its 
initialization is never read
           struct isci_host *ihost = iport->owning_controller;
                             ^~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/isci/port.c:1029:20: warning: Value stored to 'ihost' during 
its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct isci_host *ihost = iport->owning_controller;
                             ^~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/isci/port.c:1029:20: note: Value stored to 'ihost' during its 
initialization is never read
           struct isci_host *ihost = iport->owning_controller;
                             ^~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/isci/port.c:1048:20: warning: Value stored to 'ihost' during 
its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct isci_host *ihost = iport->owning_controller;
                             ^~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/isci/port.c:1048:20: note: Value stored to 'ihost' during its 
initialization is never read
           struct isci_host *ihost = iport->owning_controller;
                             ^~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/isci/port.c:1513:20: warning: Value stored to 'ihost' during 
its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct isci_host *ihost = iport->owning_controller;
                             ^~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/isci/port.c:1513:20: note: Value stored to 'ihost' during its 
initialization is never read
           struct isci_host *ihost = iport->owning_controller;
                             ^~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 8 warnings (8 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.
>> drivers/scsi/elx/libefc/efc_node.c:592:14: warning: Value stored to 'efc' 
>> during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct efc *efc = node->efc;
                       ^~~   ~~~~~~~~~
   drivers/scsi/elx/libefc/efc_node.c:592:14: note: Value stored to 'efc' 
during its initialization is never read
           struct efc *efc = node->efc;
                       ^~~   ~~~~~~~~~
>> drivers/scsi/elx/libefc/efc_node.c:653:2: warning: Value stored to 'efc' is 
>> never read [clang-analyzer-deadcode.DeadStores]
           efc = node->efc;
           ^     ~~~~~~~~~
   drivers/scsi/elx/libefc/efc_node.c:653:2: note: Value stored to 'efc' is 
never read
           efc = node->efc;
           ^     ~~~~~~~~~
   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.
   4 warnings generated.
>> drivers/scsi/elx/libefc/efc_nport.c:442:14: warning: Value stored to 'efc' 
>> during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct efc *efc = nport->efc;
                       ^~~   ~~~~~~~~~~
   drivers/scsi/elx/libefc/efc_nport.c:442:14: note: Value stored to 'efc' 
during its initialization is never read
           struct efc *efc = nport->efc;
                       ^~~   ~~~~~~~~~~
   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.
   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.
   7 warnings generated.
   Suppressed 7 warnings (7 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.
   Suppressed 7 warnings (7 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.
   Suppressed 7 warnings (7 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.
   drivers/media/pci/saa7164/saa7164-dvb.c:200:2: warning: Value stored to 
'ret' is never read [clang-analyzer-deadcode.DeadStores]
           ret = saa7164_dvb_pause_port(port);
           ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/pci/saa7164/saa7164-dvb.c:200:2: note: Value stored to 'ret' 
is never read
           ret = saa7164_dvb_pause_port(port);
           ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/pci/saa7164/saa7164-dvb.c:201:2: warning: Value stored to 
'ret' is never read [clang-analyzer-deadcode.DeadStores]
           ret = saa7164_dvb_acquire_port(port);
           ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/pci/saa7164/saa7164-dvb.c:201:2: note: Value stored to 'ret' 
is never read
           ret = saa7164_dvb_acquire_port(port);
           ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 7 warnings (7 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.
   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.
   4 warnings generated.
   drivers/hwmon/w83793.c:1253:7: warning: Access to field 'client' results in 
a dereference of a null pointer (loaded from variable 'data') 
[clang-analyzer-core.NullDereference]
           if (!data->client) {
                ^
   drivers/hwmon/w83793.c:1290:28: note: 'data' initialized to a null pointer 
value
           struct w83793_data *pos, *data = NULL;
                                     ^~~~
   drivers/hwmon/w83793.c:1299:6: note: Assuming the condition is false
           if (!mutex_trylock(&watchdog_data_mutex))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/hwmon/w83793.c:1299:2: note: Taking false branch
           if (!mutex_trylock(&watchdog_data_mutex))
           ^
   drivers/hwmon/w83793.c:1301:2: note: Left side of '&&' is false
           list_for_each_entry(pos, &watchdog_data_list, 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)
           ^
   include/linux/kernel.h:704:61: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
                                                                      ^
   drivers/hwmon/w83793.c:1301:2: note: Taking false branch
           list_for_each_entry(pos, &watchdog_data_list, 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:328:2: note: expanded from macro 
'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
           ^
   include/linux/compiler_types.h:316:2: note: expanded from macro 
'_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:308:3: note: expanded from macro 
'__compiletime_assert'
                   if (!(condition))                                       \
                   ^
   drivers/hwmon/w83793.c:1301:2: note: Loop condition is false.  Exiting loop
           list_for_each_entry(pos, &watchdog_data_list, 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'

vim +/efc +51 drivers/scsi/elx/libefc/efc_device.c

202bfdffae27a5 James Smart 2021-06-01  42  
202bfdffae27a5 James Smart 2021-06-01  43  static void
202bfdffae27a5 James Smart 2021-06-01  44  __efc_d_common(const char *funcname, 
struct efc_sm_ctx *ctx,
202bfdffae27a5 James Smart 2021-06-01  45              enum efc_sm_event evt, 
void *arg)
202bfdffae27a5 James Smart 2021-06-01  46  {
202bfdffae27a5 James Smart 2021-06-01  47       struct efc_node *node = NULL;
202bfdffae27a5 James Smart 2021-06-01  48       struct efc *efc = NULL;
202bfdffae27a5 James Smart 2021-06-01  49  
202bfdffae27a5 James Smart 2021-06-01  50       node = ctx->app;
202bfdffae27a5 James Smart 2021-06-01 @51       efc = node->efc;
202bfdffae27a5 James Smart 2021-06-01  52  
202bfdffae27a5 James Smart 2021-06-01  53       switch (evt) {
202bfdffae27a5 James Smart 2021-06-01  54       /* Handle shutdown events */
202bfdffae27a5 James Smart 2021-06-01  55       case EFC_EVT_SHUTDOWN:
202bfdffae27a5 James Smart 2021-06-01  56               efc_log_debug(efc, 
"[%s] %-20s %-20s\n", node->display_name,
202bfdffae27a5 James Smart 2021-06-01  57                             funcname, 
efc_sm_event_name(evt));
202bfdffae27a5 James Smart 2021-06-01  58               node->shutdown_reason = 
EFC_NODE_SHUTDOWN_DEFAULT;
202bfdffae27a5 James Smart 2021-06-01  59               
efc_node_transition(node, __efc_d_initiate_shutdown, NULL);
202bfdffae27a5 James Smart 2021-06-01  60               break;
202bfdffae27a5 James Smart 2021-06-01  61       case 
EFC_EVT_SHUTDOWN_EXPLICIT_LOGO:
202bfdffae27a5 James Smart 2021-06-01  62               efc_log_debug(efc, 
"[%s] %-20s %-20s\n",
202bfdffae27a5 James Smart 2021-06-01  63                             
node->display_name, funcname,
202bfdffae27a5 James Smart 2021-06-01  64                               
efc_sm_event_name(evt));
202bfdffae27a5 James Smart 2021-06-01  65               node->shutdown_reason = 
EFC_NODE_SHUTDOWN_EXPLICIT_LOGO;
202bfdffae27a5 James Smart 2021-06-01  66               
efc_node_transition(node, __efc_d_initiate_shutdown, NULL);
202bfdffae27a5 James Smart 2021-06-01  67               break;
202bfdffae27a5 James Smart 2021-06-01  68       case 
EFC_EVT_SHUTDOWN_IMPLICIT_LOGO:
202bfdffae27a5 James Smart 2021-06-01  69               efc_log_debug(efc, 
"[%s] %-20s %-20s\n", node->display_name,
202bfdffae27a5 James Smart 2021-06-01  70                             funcname, 
efc_sm_event_name(evt));
202bfdffae27a5 James Smart 2021-06-01  71               node->shutdown_reason = 
EFC_NODE_SHUTDOWN_IMPLICIT_LOGO;
202bfdffae27a5 James Smart 2021-06-01  72               
efc_node_transition(node, __efc_d_initiate_shutdown, NULL);
202bfdffae27a5 James Smart 2021-06-01  73               break;
202bfdffae27a5 James Smart 2021-06-01  74  
202bfdffae27a5 James Smart 2021-06-01  75       default:
202bfdffae27a5 James Smart 2021-06-01  76               /* call default event 
handler common to all nodes */
202bfdffae27a5 James Smart 2021-06-01  77               
__efc_node_common(funcname, ctx, evt, arg);
202bfdffae27a5 James Smart 2021-06-01  78       }
202bfdffae27a5 James Smart 2021-06-01  79  }
202bfdffae27a5 James Smart 2021-06-01  80  

:::::: The code at line 51 was first introduced by commit
:::::: 202bfdffae27a50d6fae0a259cde1333d9833127 scsi: elx: libefc: FC node ELS 
and state handling

:::::: TO: James Smart <[email protected]>
:::::: CC: Martin K. Petersen <[email protected]>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to