CC: l...@lists.linux.dev
CC: kbuild-...@lists.01.org
BCC: l...@intel.com
CC: linux-ker...@vger.kernel.org
TO: Alan Adamson <alan.adam...@oracle.com>
CC: Christoph Hellwig <h...@lst.de>
CC: Chaitanya Kulkarni <k...@nvidia.com>
CC: "Martin K. Petersen" <martin.peter...@oracle.com>
CC: Himanshu Madhani <himanshu.madh...@oracle.com>
CC: Keith Busch <kbu...@kernel.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   1930a6e739c4b4a654a69164dbe39e554d228915
commit: bd83fe6f2cd2133beaac7c423fd36c3515048fc8 nvme: add verbose error logging
date:   4 weeks ago
:::::: branch date: 13 hours ago
:::::: commit date: 4 weeks ago
config: arm-randconfig-c002-20220328 
(https://download.01.org/0day-ci/archive/20220329/202203292153.lr9vgnsg-...@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 
0f6d9501cf49ce02937099350d08f20c4af86f3d)
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=bd83fe6f2cd2133beaac7c423fd36c3515048fc8
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout bd83fe6f2cd2133beaac7c423fd36c3515048fc8
        # 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 <l...@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
                   ^
   drivers/tty/serial/serial_core.c:768:2: note: Returning without writing to 
'retinfo->iomem_reg_shift'
           return ret;
           ^
   drivers/tty/serial/serial_core.c:2754:2: note: Returning from 'uart_get_info'
           uart_get_info(port, &tmp);
           ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/serial_core.c:2755:9: note: 3rd function call argument is 
an uninitialized value
           return sprintf(buf, "%d\n", tmp.iomem_reg_shift);
                  ^                    ~~~~~~~~~~~~~~~~~~~
   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.
   8 warnings generated.
   lib/string_helpers.c:112:12: warning: Assigned value is garbage or undefined 
[clang-analyzer-core.uninitialized.Assign]
           remainder += rounding[j];
                     ^  ~~~~~~~~~~~
   lib/string_helpers.c:60:6: note: Assuming 'blk_size' is not equal to 0
           if (blk_size == 0)
               ^~~~~~~~~~~~~
   lib/string_helpers.c:60:2: note: Taking false branch
           if (blk_size == 0)
           ^
   lib/string_helpers.c:62:6: note: Assuming 'size' is not equal to 0
           if (size == 0)
               ^~~~~~~~~
   lib/string_helpers.c:62:2: note: Taking false branch
           if (size == 0)
           ^
   lib/string_helpers.c:76:2: note: Loop condition is false. Execution 
continues on line 81
           while (blk_size >> 32) {
           ^
   lib/string_helpers.c:81:2: note: Loop condition is false. Execution 
continues on line 88
           while (size >> 32) {
           ^
   lib/string_helpers.c:91:2: note: Loop condition is false. Execution 
continues on line 98
           while (size >= divisor[units]) {
           ^
   lib/string_helpers.c:99:14: note: Assuming the condition is true
           for (j = 0; sf_cap*10 < 1000; j++)
                       ^~~~~~~~~~~~~~~~
   lib/string_helpers.c:99:2: note: Loop condition is true.  Entering loop body
           for (j = 0; sf_cap*10 < 1000; j++)
           ^
   lib/string_helpers.c:99:14: note: Assuming the condition is true
           for (j = 0; sf_cap*10 < 1000; j++)
                       ^~~~~~~~~~~~~~~~
   lib/string_helpers.c:99:2: note: Loop condition is true.  Entering loop body
           for (j = 0; sf_cap*10 < 1000; j++)
           ^
   lib/string_helpers.c:99:14: note: Assuming the condition is true
           for (j = 0; sf_cap*10 < 1000; j++)
                       ^~~~~~~~~~~~~~~~
   lib/string_helpers.c:99:2: note: Loop condition is true.  Entering loop body
           for (j = 0; sf_cap*10 < 1000; j++)
           ^
   lib/string_helpers.c:99:32: note: The value 3 is assigned to 'j'
           for (j = 0; sf_cap*10 < 1000; j++)
                                         ^~~
   lib/string_helpers.c:99:14: note: Assuming the condition is false
           for (j = 0; sf_cap*10 < 1000; j++)
                       ^~~~~~~~~~~~~~~~
   lib/string_helpers.c:99:2: note: Loop condition is false. Execution 
continues on line 102
           for (j = 0; sf_cap*10 < 1000; j++)
           ^
   lib/string_helpers.c:102:6: note: Assuming 'units' is not equal to 
STRING_UNITS_2
           if (units == STRING_UNITS_2) {
               ^~~~~~~~~~~~~~~~~~~~~~~
   lib/string_helpers.c:102:2: note: Taking false branch
           if (units == STRING_UNITS_2) {
           ^
   lib/string_helpers.c:112:12: note: Assigned value is garbage or undefined
           remainder += rounding[j];
                     ^  ~~~~~~~~~~~
   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.
   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.
   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.
   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.
   8 warnings generated.
   drivers/phy/motorola/phy-mapphone-mdm6600.c:424:3: warning: Value stored to 
'error' is never read [clang-analyzer-deadcode.DeadStores]
                   error = -ETIMEDOUT;
                   ^       ~~~~~~~~~~
   drivers/phy/motorola/phy-mapphone-mdm6600.c:424:3: note: Value stored to 
'error' is never read
                   error = -ETIMEDOUT;
                   ^       ~~~~~~~~~~
   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/nvme/host/core.c:305:23: warning: Value stored to 'nr' during its 
>> initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct nvme_request *nr = nvme_req(req);
                                ^~   ~~~~~~~~~~~~~
   drivers/nvme/host/core.c:305:23: note: Value stored to 'nr' during its 
initialization is never read
           struct nvme_request *nr = nvme_req(req);
                                ^~   ~~~~~~~~~~~~~
   drivers/nvme/host/core.c:3988:3: warning: Use of memory after it is freed 
[clang-analyzer-unix.Malloc]
                   nvme_put_ns(ns);
                   ^
   drivers/nvme/host/core.c:4178:6: note: Assuming field 'state' is equal to 
NVME_CTRL_LIVE
           if (ctrl->state != NVME_CTRL_LIVE || !ctrl->tagset)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvme/host/core.c:4178:6: note: Left side of '||' is false
   drivers/nvme/host/core.c:4178:39: note: Assuming field 'tagset' is non-null
           if (ctrl->state != NVME_CTRL_LIVE || !ctrl->tagset)
                                                ^~~~~~~~~~~~~
   drivers/nvme/host/core.c:4178:2: note: Taking false branch
           if (ctrl->state != NVME_CTRL_LIVE || !ctrl->tagset)
           ^
   drivers/nvme/host/core.c:4181:6: note: '?' condition is true
           if (test_and_clear_bit(NVME_AER_NOTICE_NS_CHANGED, &ctrl->events)) {
               ^
   arch/arm/include/asm/bitops.h:193:34: note: expanded from macro 
'test_and_clear_bit'
   #define test_and_clear_bit(nr,p)        ATOMIC_BITOP(test_and_clear_bit,nr,p)
                                           ^
   arch/arm/include/asm/bitops.h:181:3: note: expanded from macro 'ATOMIC_BITOP'
           (__builtin_constant_p(nr) ? ____atomic_##name(nr, p) : _##name(nr,p))
            ^
   drivers/nvme/host/core.c:4181:6: note: Assuming the condition is false
           if (test_and_clear_bit(NVME_AER_NOTICE_NS_CHANGED, &ctrl->events)) {
               ^
   arch/arm/include/asm/bitops.h:193:34: note: expanded from macro 
'test_and_clear_bit'
   #define test_and_clear_bit(nr,p)        ATOMIC_BITOP(test_and_clear_bit,nr,p)
                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/arm/include/asm/bitops.h:181:3: note: expanded from macro 'ATOMIC_BITOP'
           (__builtin_constant_p(nr) ? ____atomic_##name(nr, p) : _##name(nr,p))
            ^~~~~~~~~~~~~~~~~~~~
   drivers/nvme/host/core.c:4181:2: note: Taking false branch
           if (test_and_clear_bit(NVME_AER_NOTICE_NS_CHANGED, &ctrl->events)) {
           ^
   drivers/nvme/host/core.c:4187:6: note: Calling 'nvme_scan_ns_list'
           if (nvme_scan_ns_list(ctrl) != 0)
               ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvme/host/core.c:4092:2: note: Taking false branch
           if (nvme_ctrl_limited_cns(ctrl))
           ^
   drivers/nvme/host/core.c:4096:6: note: Assuming 'ns_list' is non-null
           if (!ns_list)
               ^~~~~~~~
   drivers/nvme/host/core.c:4096:2: note: Taking false branch
           if (!ns_list)
           ^
   drivers/nvme/host/core.c:4099:2: note: Loop condition is true.  Entering 
loop body
           for (;;) {
           ^
   drivers/nvme/host/core.c:4108:7: note: Assuming 'ret' is 0
                   if (ret) {
                       ^~~
   drivers/nvme/host/core.c:4108:3: note: Taking false branch
                   if (ret) {
                   ^
   drivers/nvme/host/core.c:4114:3: note: Loop condition is true.  Entering 
loop body
                   for (i = 0; i < nr_entries; i++) {
                   ^
   drivers/nvme/host/core.c:4117:8: note: Assuming 'nsid' is not equal to 0
                           if (!nsid)      /* end of the list? */
                               ^~~~~
   drivers/nvme/host/core.c:4117:4: note: Taking false branch
                           if (!nsid)      /* end of the list? */
                           ^
   drivers/nvme/host/core.c:4120:11: note: Assuming the condition is true
                           while (++prev < nsid)
                                  ^~~~~~~~~~~~~
   drivers/nvme/host/core.c:4120:4: note: Loop condition is true.  Entering 
loop body
                           while (++prev < nsid)
                           ^
   drivers/nvme/host/core.c:4121:5: note: Calling 'nvme_ns_remove_by_nsid'
                                   nvme_ns_remove_by_nsid(ctrl, prev);
                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvme/host/core.c:3986:6: note: 'ns' is non-null
           if (ns) {
               ^~
   drivers/nvme/host/core.c:3986:2: note: Taking true branch
           if (ns) {
           ^
   drivers/nvme/host/core.c:3987:3: note: Calling 'nvme_ns_remove'
                   nvme_ns_remove(ns);
                   ^~~~~~~~~~~~~~~~~~
   drivers/nvme/host/core.c:3946:6: note: '?' condition is true
           if (test_and_set_bit(NVME_NS_REMOVING, &ns->flags))
               ^
   arch/arm/include/asm/bitops.h:192:33: note: expanded from macro 
'test_and_set_bit'
   #define test_and_set_bit(nr,p)          ATOMIC_BITOP(test_and_set_bit,nr,p)
                                           ^
   arch/arm/include/asm/bitops.h:181:3: note: expanded from macro 'ATOMIC_BITOP'
           (__builtin_constant_p(nr) ? ____atomic_##name(nr, p) : _##name(nr,p))
            ^
   drivers/nvme/host/core.c:3946:6: note: Assuming the condition is false
           if (test_and_set_bit(NVME_NS_REMOVING, &ns->flags))
               ^
   arch/arm/include/asm/bitops.h:192:33: note: expanded from macro 
'test_and_set_bit'

vim +/nr +305 drivers/nvme/host/core.c

49cd84b6f8b677 Keith Busch  2018-11-27  301  
bd83fe6f2cd213 Alan Adamson 2022-02-03  302  static void nvme_log_error(struct 
request *req)
bd83fe6f2cd213 Alan Adamson 2022-02-03  303  {
bd83fe6f2cd213 Alan Adamson 2022-02-03  304     struct nvme_ns *ns = 
req->q->queuedata;
bd83fe6f2cd213 Alan Adamson 2022-02-03 @305     struct nvme_request *nr = 
nvme_req(req);
bd83fe6f2cd213 Alan Adamson 2022-02-03  306  
bd83fe6f2cd213 Alan Adamson 2022-02-03  307     if (ns) {
bd83fe6f2cd213 Alan Adamson 2022-02-03  308             pr_err_ratelimited("%s: 
%s(0x%x) @ LBA %llu, %llu blocks, %s (sct 0x%x / sc 0x%x) %s%s\n",
bd83fe6f2cd213 Alan Adamson 2022-02-03  309                    ns->disk ? 
ns->disk->disk_name : "?",
bd83fe6f2cd213 Alan Adamson 2022-02-03  310                    
nvme_get_opcode_str(nr->cmd->common.opcode),
bd83fe6f2cd213 Alan Adamson 2022-02-03  311                    
nr->cmd->common.opcode,
bd83fe6f2cd213 Alan Adamson 2022-02-03  312                    (unsigned long 
long)nvme_sect_to_lba(ns, blk_rq_pos(req)),
bd83fe6f2cd213 Alan Adamson 2022-02-03  313                    (unsigned long 
long)blk_rq_bytes(req) >> ns->lba_shift,
bd83fe6f2cd213 Alan Adamson 2022-02-03  314                    
nvme_get_error_status_str(nr->status),
bd83fe6f2cd213 Alan Adamson 2022-02-03  315                    nr->status >> 8 
& 7,     /* Status Code Type */
bd83fe6f2cd213 Alan Adamson 2022-02-03  316                    nr->status & 
0xff,       /* Status Code */
bd83fe6f2cd213 Alan Adamson 2022-02-03  317                    nr->status & 
NVME_SC_MORE ? "MORE " : "",
bd83fe6f2cd213 Alan Adamson 2022-02-03  318                    nr->status & 
NVME_SC_DNR  ? "DNR "  : "");
bd83fe6f2cd213 Alan Adamson 2022-02-03  319             return;
bd83fe6f2cd213 Alan Adamson 2022-02-03  320     }
bd83fe6f2cd213 Alan Adamson 2022-02-03  321  
bd83fe6f2cd213 Alan Adamson 2022-02-03  322     pr_err_ratelimited("%s: 
%s(0x%x), %s (sct 0x%x / sc 0x%x) %s%s\n",
bd83fe6f2cd213 Alan Adamson 2022-02-03  323                        
dev_name(nr->ctrl->device),
bd83fe6f2cd213 Alan Adamson 2022-02-03  324                        
nvme_get_admin_opcode_str(nr->cmd->common.opcode),
bd83fe6f2cd213 Alan Adamson 2022-02-03  325                        
nr->cmd->common.opcode,
bd83fe6f2cd213 Alan Adamson 2022-02-03  326                        
nvme_get_error_status_str(nr->status),
bd83fe6f2cd213 Alan Adamson 2022-02-03  327                        nr->status 
>> 8 & 7, /* Status Code Type */
bd83fe6f2cd213 Alan Adamson 2022-02-03  328                        nr->status & 
0xff,   /* Status Code */
bd83fe6f2cd213 Alan Adamson 2022-02-03  329                        nr->status & 
NVME_SC_MORE ? "MORE " : "",
bd83fe6f2cd213 Alan Adamson 2022-02-03  330                        nr->status & 
NVME_SC_DNR  ? "DNR "  : "");
bd83fe6f2cd213 Alan Adamson 2022-02-03  331  }
bd83fe6f2cd213 Alan Adamson 2022-02-03  332  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to