CC: llvm(a)lists.linux.dev CC: kbuild-all(a)lists.01.org BCC: lkp(a)intel.com CC: linux-kernel(a)vger.kernel.org TO: James Smart CC: "Martin K. Petersen" CC: Hannes Reinecke CC: Daniel Wagner CC: Ram Vegesna tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 664a393a2663a0f62fc1b18157ccae33dcdbb8c8 commit: ebc076b3eddc807729bd81f7bc48e798a3ddc477 scsi: elx: efct: Tie into kernel Kconfig and build process date: 12 months ago :::::: branch date: 21 hours ago :::::: commit date: 12 months ago config: s390-randconfig-c005-20220524 (https://download.01.org/0day-ci/archive/20220530/202205300249.0VPxOAZe-lkp(a)intel.com/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 10c9ecce9f6096e18222a331c5e7d085bd813f75) 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 s390 cross compiling tool for clang build # apt-get install binutils-s390x-linux-gnu # 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 COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=s390 clang-analyzer If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot clang-analyzer warnings: (new ones prefixed by >>) ^~~~~~~~ drivers/atm/fore200e.c:1234:5: note: Taking true branch if (activate) { ^ drivers/atm/fore200e.c:1252:9: note: 'activate' is 1 if (activate) { ^~~~~~~~ drivers/atm/fore200e.c:1252:5: note: Taking true branch if (activate) { ^ drivers/atm/fore200e.c:1259:2: note: 1st function call argument is an uninitialized value fore200e->bus->write(*(u32*)&vpvc, (u32 __iomem *)&entry->cp_entry->cmd.activate_block.vpvc); ^ ~~~~~~~~~~~~ drivers/atm/fore200e.c:1263:2: warning: 1st function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage] fore200e->bus->write(*(u32*)&vpvc, (u32 __iomem *)&entry->cp_entry->cmd.deactivate_block.vpvc); ^ drivers/atm/fore200e.c:1419:5: note: Assuming 'vcc' is non-null ASSERT(vcc); ^ drivers/atm/fore200e.c:85:30: note: expanded from macro 'ASSERT' #define ASSERT(expr) if (!(expr)) { \ ^~~~~~~ drivers/atm/fore200e.c:1419:5: note: Taking false branch ASSERT(vcc); ^ drivers/atm/fore200e.c:85:26: note: expanded from macro 'ASSERT' #define ASSERT(expr) if (!(expr)) { \ ^ drivers/atm/fore200e.c:1422:13: note: Assuming field 'vpi' is >= 0 ASSERT((vcc->vpi >= 0) && (vcc->vpi < 1<vpi >= 0) && (vcc->vpi < 1<vpi >= 0) && (vcc->vpi < 1<vpi >= 0) && (vcc->vpi < 1<= 0 ASSERT((vcc->vci >= 0) && (vcc->vci < 1<vci >= 0) && (vcc->vci < 1<vci >= 0) && (vcc->vci < 1<vci >= 0) && (vcc->vci < 1<itf, vcc->vpi, vcc->vci, fore200e_atm2fore_aal(vcc->qos.aal)); ^ drivers/atm/fore200e.c:71:42: note: expanded from macro 'DPRINTK' #define DPRINTK(level, format, args...) do {} while (0) ^ drivers/atm/fore200e.c:1429:5: note: Calling 'fore200e_activate_vcin' fore200e_activate_vcin(fore200e, 0, vcc, 0); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/atm/fore200e.c:1234:9: note: 'activate' is 0 if (activate) { ^~~~~~~~ drivers/atm/fore200e.c:1234:5: note: Taking false branch if (activate) { ^ drivers/atm/fore200e.c:1252:9: note: 'activate' is 0 if (activate) { ^~~~~~~~ drivers/atm/fore200e.c:1252:5: note: Taking false branch if (activate) { ^ drivers/atm/fore200e.c:1263:2: note: 1st function call argument is an uninitialized value fore200e->bus->write(*(u32*)&vpvc, (u32 __iomem *)&entry->cp_entry->cmd.deactivate_block.vpvc); ^ ~~~~~~~~~~~~ Suppressed 25 warnings (13 in non-user code, 12 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. 19 warnings generated. Suppressed 19 warnings (7 in non-user code, 12 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. 22 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 >> drivers/scsi/elx/efct/efct_hw.c:1593:29: warning: Dereference of null pointer [clang-analyzer-core.NullDereference] io->wq = hw->wq_cpu_array[raw_smp_processor_id()]; ^ arch/s390/include/asm/smp.h:15:32: note: expanded from macro 'raw_smp_processor_id' #define raw_smp_processor_id() (S390_lowcore.cpu_nr) ^ drivers/scsi/elx/efct/efct_hw.c:2709:8: note: Calling 'efct_hw_io_alloc' hio = efct_hw_io_alloc(hw); ^~~~~~~~~~~~~~~~~~~~ drivers/scsi/elx/efct/efct_hw.c:1614:2: note: Loop condition is false. Exiting loop spin_lock_irqsave(&hw->io_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/elx/efct/efct_hw.c:1614:2: note: Loop condition is false. Exiting loop spin_lock_irqsave(&hw->io_lock, flags); ^ include/linux/spinlock.h:382:43: note: expanded from macro 'spin_lock_irqsave' #define spin_lock_irqsave(lock, flags) \ ^ drivers/scsi/elx/efct/efct_hw.c:1615:7: note: Calling '_efct_hw_io_alloc' io = _efct_hw_io_alloc(hw); ^~~~~~~~~~~~~~~~~~~~~ drivers/scsi/elx/efct/efct_hw.c:1583:6: note: Assuming the condition is true if (!list_empty(&hw->io_free)) { ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/elx/efct/efct_hw.c:1583:2: note: Taking true branch if (!list_empty(&hw->io_free)) { ^ drivers/scsi/elx/efct/efct_hw.c:1584:8: note: Left side of '&&' is false io = list_first_entry(&hw->io_free, struct efct_hw_io, ^ 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/scsi/elx/efct/efct_hw.c:1584:8: note: Taking false branch io = list_first_entry(&hw->io_free, struct efct_hw_io, ^ 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:2: note: expanded from macro 'container_of' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ ^ note: (skipping 1 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/scsi/elx/efct/efct_hw.c:1584:8: note: Loop condition is false. Exiting loop io = list_first_entry(&hw->io_free, struct efct_hw_io, ^ 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:2: note: expanded from macro 'container_of' BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \ ^ note: (skipping 1 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:306:2: note: expanded from macro '__compiletime_assert' do { \ ^ drivers/scsi/elx/efct/efct_hw.c:1588:6: note: 'io' is non-null if (io) { ^~ drivers/scsi/elx/efct/efct_hw.c:1588:2: note: Taking true branch if (io) { ^ drivers/scsi/elx/efct/efct_hw.c:1593:29: note: Dereference of null pointer io->wq = hw->wq_cpu_array[raw_smp_processor_id()]; ^ arch/s390/include/asm/smp.h:15:32: note: expanded from macro 'raw_smp_processor_id' #define raw_smp_processor_id() (S390_lowcore.cpu_nr) ^~~~~~~~~~~~~~~~~~~~~ -- ^~~~~~~~~~~~~~~~~~~~~~~~~ arch/s390/include/asm/lowcore.h:192:22: note: expanded from macro 'S390_lowcore' #define S390_lowcore (*((struct lowcore *) 0)) ^ drivers/ata/libata-eh.c:777:2: note: Dereference of null pointer DEFINE_WAIT(wait); ^ include/linux/wait.h:1153:27: note: expanded from macro 'DEFINE_WAIT' #define DEFINE_WAIT(name) DEFINE_WAIT_FUNC(name, autoremove_wake_function) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/wait.h:1148:14: note: expanded from macro 'DEFINE_WAIT_FUNC' .private = current, \ ^~~~~~~ arch/s390/include/asm/current.h:17:45: note: expanded from macro 'current' #define current ((struct task_struct *const)S390_lowcore.current_task) ^~~~~~~~~~~~~~~~~~~~~~~~~ arch/s390/include/asm/lowcore.h:192:22: note: expanded from macro 'S390_lowcore' #define S390_lowcore (*((struct lowcore *) 0)) ^ Suppressed 21 warnings (9 in non-user code, 12 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. 8 warnings generated. drivers/usb/misc/yurex.c:196:2: warning: Dereference of null pointer [clang-analyzer-core.NullDereference] DEFINE_WAIT(wait); ^ include/linux/wait.h:1153:27: note: expanded from macro 'DEFINE_WAIT' #define DEFINE_WAIT(name) DEFINE_WAIT_FUNC(name, autoremove_wake_function) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/wait.h:1148:14: note: expanded from macro 'DEFINE_WAIT_FUNC' .private = current, \ ^~~~~~~ arch/s390/include/asm/current.h:17:45: note: expanded from macro 'current' #define current ((struct task_struct *const)S390_lowcore.current_task) ^~~~~~~~~~~~~~~~~~~~~~~~~ arch/s390/include/asm/lowcore.h:192:22: note: expanded from macro 'S390_lowcore' #define S390_lowcore (*((struct lowcore *) 0)) ^ drivers/usb/misc/yurex.c:196:2: note: Dereference of null pointer DEFINE_WAIT(wait); ^ include/linux/wait.h:1153:27: note: expanded from macro 'DEFINE_WAIT' #define DEFINE_WAIT(name) DEFINE_WAIT_FUNC(name, autoremove_wake_function) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/wait.h:1148:14: note: expanded from macro 'DEFINE_WAIT_FUNC' .private = current, \ ^~~~~~~ arch/s390/include/asm/current.h:17:45: note: expanded from macro 'current' #define current ((struct task_struct *const)S390_lowcore.current_task) ^~~~~~~~~~~~~~~~~~~~~~~~~ arch/s390/include/asm/lowcore.h:192:22: note: expanded from macro 'S390_lowcore' #define S390_lowcore (*((struct lowcore *) 0)) ^ drivers/usb/misc/yurex.c:435:2: warning: Dereference of null pointer [clang-analyzer-core.NullDereference] DEFINE_WAIT(wait); ^ include/linux/wait.h:1153:27: note: expanded from macro 'DEFINE_WAIT' #define DEFINE_WAIT(name) DEFINE_WAIT_FUNC(name, autoremove_wake_function) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/wait.h:1148:14: note: expanded from macro 'DEFINE_WAIT_FUNC' .private = current, \ ^~~~~~~ arch/s390/include/asm/current.h:17:45: note: expanded from macro 'current' #define current ((struct task_struct *const)S390_lowcore.current_task) ^~~~~~~~~~~~~~~~~~~~~~~~~ arch/s390/include/asm/lowcore.h:192:22: note: expanded from macro 'S390_lowcore' #define S390_lowcore (*((struct lowcore *) 0)) ^ drivers/usb/misc/yurex.c:435:2: note: Dereference of null pointer DEFINE_WAIT(wait); ^ include/linux/wait.h:1153:27: note: expanded from macro 'DEFINE_WAIT' #define DEFINE_WAIT(name) DEFINE_WAIT_FUNC(name, autoremove_wake_function) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/wait.h:1148:14: note: expanded from macro 'DEFINE_WAIT_FUNC' .private = current, \ ^~~~~~~ arch/s390/include/asm/current.h:17:45: note: expanded from macro 'current' #define current ((struct task_struct *const)S390_lowcore.current_task) ^~~~~~~~~~~~~~~~~~~~~~~~~ arch/s390/include/asm/lowcore.h:192:22: note: expanded from macro 'S390_lowcore' #define S390_lowcore (*((struct lowcore *) 0)) ^ 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. 19 warnings generated. Suppressed 19 warnings (7 in non-user code, 12 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. 19 warnings generated. Suppressed 19 warnings (7 in non-user code, 12 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. 25 warnings generated. drivers/scsi/pm8001/pm8001_init.c:410:3: warning: Value stored to 'rc' is never read [clang-analyzer-deadcode.DeadStores] rc = -ENOMEM; ^ ~~~~~~~ drivers/scsi/pm8001/pm8001_init.c:410:3: note: Value stored to 'rc' is never read rc = -ENOMEM; ^ ~~~~~~~ Suppressed 24 warnings (12 in non-user code, 12 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. 20 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 19 warnings (7 in non-user code, 12 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. 36 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); -- include/scsi/scsi_device.h:451:31: note: expanded from macro 'scsi_execute' BUILD_BUG_ON((sense) != NULL && \ ^ include/scsi/scsi_device.h:462:9: note: Taking false branch return scsi_execute(sdev, cmd, data_direction, buffer, ^ include/scsi/scsi_device.h:451:2: note: expanded from macro 'scsi_execute' BUILD_BUG_ON((sense) != NULL && \ ^ include/linux/build_bug.h:50:2: note: expanded from macro 'BUILD_BUG_ON' BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) ^ 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)) \ ^ include/scsi/scsi_device.h:462:9: note: Loop condition is false. Exiting loop return scsi_execute(sdev, cmd, data_direction, buffer, ^ include/scsi/scsi_device.h:451:2: note: expanded from macro 'scsi_execute' BUILD_BUG_ON((sense) != NULL && \ ^ include/linux/build_bug.h:50:2: note: expanded from macro 'BUILD_BUG_ON' BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) ^ 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 { \ ^ include/scsi/scsi_device.h:462:9: note: Calling '__scsi_execute' return scsi_execute(sdev, cmd, data_direction, buffer, ^ include/scsi/scsi_device.h:453:2: note: expanded from macro 'scsi_execute' __scsi_execute(sdev, cmd, data_direction, buffer, bufflen, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/scsi_lib.c:217:4: note: 'data_direction' is not equal to DMA_TO_DEVICE data_direction == DMA_TO_DEVICE ? ^~~~~~~~~~~~~~ drivers/scsi/scsi_lib.c:217:4: note: '?' condition is false drivers/scsi/scsi_lib.c:219:4: note: '?' condition is false rq_flags & RQF_PM ? BLK_MQ_REQ_PM : 0); ^ drivers/scsi/scsi_lib.c:220:2: note: Taking true branch if (IS_ERR(req)) ^ drivers/scsi/scsi_lib.c:221:3: note: Returning without writing to 'sshdr->response_code' return PTR_ERR(req); ^ include/scsi/scsi_device.h:462:9: note: Returning from '__scsi_execute' return scsi_execute(sdev, cmd, data_direction, buffer, ^ include/scsi/scsi_device.h:453:2: note: expanded from macro 'scsi_execute' __scsi_execute(sdev, cmd, data_direction, buffer, bufflen, \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/scsi/scsi_device.h:462:2: note: Returning without writing to 'sshdr->response_code' return scsi_execute(sdev, cmd, data_direction, buffer, ^ drivers/scsi/scsi_lib.c:2139:11: note: Returning from 'scsi_execute_req' result = scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buffer, len, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/scsi_lib.c:2141:6: note: Assuming 'result' is >= 0 if (result < 0) ^~~~~~~~~~ drivers/scsi/scsi_lib.c:2141:2: note: Taking false branch if (result < 0) ^ drivers/scsi/scsi_lib.c:2149:2: note: Taking true branch if (!scsi_status_is_good(result)) { ^ drivers/scsi/scsi_lib.c:2150:7: note: Calling 'scsi_sense_valid' if (scsi_sense_valid(sshdr)) { ^~~~~~~~~~~~~~~~~~~~~~~ include/scsi/scsi_common.h:63:7: note: 'sshdr' is non-null if (!sshdr) ^~~~~ include/scsi/scsi_common.h:63:2: note: Taking false branch if (!sshdr) ^ include/scsi/scsi_common.h:66:31: note: The left operand of '&' is a garbage value return (sshdr->response_code & 0x70) == 0x70; ~~~~~~~~~~~~~~~~~~~~ ^ Suppressed 19 warnings (7 in non-user code, 12 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. 21 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 19 warnings (7 in non-user code, 12 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. 21 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 19 warnings (7 in non-user code, 12 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. 19 warnings generated. Suppressed 19 warnings (7 in non-user code, 12 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. 21 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 19 warnings (7 in non-user code, 12 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. 22 warnings generated. drivers/mtd/ubi/block.c:124:2: warning: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy] strcpy(buf, val); ^~~~~~ drivers/mtd/ubi/block.c:124:2: note: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 strcpy(buf, val); ^~~~~~ drivers/mtd/ubi/block.c:144:4: warning: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy] strcpy(param->name, tokens[1]); ^~~~~~ drivers/mtd/ubi/block.c:144:4: note: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 strcpy(param->name, tokens[1]); ^~~~~~ drivers/mtd/ubi/block.c:149:3: warning: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy] strcpy(param->name, tokens[0]); ^~~~~~ drivers/mtd/ubi/block.c:149:3: note: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 strcpy(param->name, tokens[0]); ^~~~~~ Suppressed 19 warnings (7 in non-user code, 12 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. 25 warnings generated. drivers/mtd/ubi/gluebi.c:323:3: warning: Dereference of null pointer [clang-analyzer-core.NullDereference] err_msg("gluebi MTD device %d form UBI device %d volume %d already exists", ^ drivers/mtd/ubi/gluebi.c:32:9: note: expanded from macro 'err_msg' current->pid, __func__, ##__VA_ARGS__) ^ drivers/mtd/ubi/gluebi.c:449:2: note: Control jumps to 'case UBI_VOLUME_ADDED:' at line 450 switch (l) { ^ drivers/mtd/ubi/gluebi.c:451:3: note: Calling 'gluebi_create' gluebi_create(&nt->di, &nt->vi); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/mtd/ubi/gluebi.c:284:11: note: Calling 'kzalloc' gluebi = kzalloc(sizeof(struct gluebi_device), GFP_KERNEL); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/slab.h:686:9: note: Calling 'kmalloc' return kmalloc(size, flags | __GFP_ZERO); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/slab.h:544:2: note: Taking false branch if (__builtin_constant_p(size)) { ^ include/linux/slab.h:561:2: note: Returning pointer, which participates in a condition later return __kmalloc(size, flags); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/slab.h:686:9: note: Returning from 'kmalloc' return kmalloc(size, flags | __GFP_ZERO); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/slab.h:686:2: note: Returning pointer, which participates in a condition later return kmalloc(size, flags | __GFP_ZERO); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/mtd/ubi/gluebi.c:284:11: note: Returning from 'kzalloc' gluebi = kzalloc(sizeof(struct gluebi_device), GFP_KERNEL); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/mtd/ubi/gluebi.c:285:6: note: Assuming 'gluebi' is non-null if (!gluebi) ^~~~~~~ drivers/mtd/ubi/gluebi.c:285:2: note: Taking false branch if (!gluebi) ^ drivers/mtd/ubi/gluebi.c:289:14: note: Calling 'kmemdup' mtd->name = kmemdup(vi->name, vi->name_len + 1, GFP_KERNEL); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/fortify-string.h:266:33: note: Left side of '&&' is false if (__builtin_constant_p(size) && p_size < size) ^ include/linux/fortify-string.h:268:6: note: Assuming 'p_size' is >= 'size' if (p_size < size) ^~~~~~~~~~~~~ include/linux/fortify-string.h:268:2: note: Taking false branch if (p_size < size) ^ include/linux/fortify-string.h:270:2: note: Returning pointer, which participates in a condition later return __real_kmemdup(p, size, gfp); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/mtd/ubi/gluebi.c:289:14: note: Returning from 'kmemdup' mtd->name = kmemdup(vi->name, vi->name_len + 1, GFP_KERNEL); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/mtd/ubi/gluebi.c:290:6: note: Assuming field 'name' is non-null if (!mtd->name) { ^~~~~~~~~~ drivers/mtd/ubi/gluebi.c:290:2: note: Taking false branch if (!mtd->name) { ^ drivers/mtd/ubi/gluebi.c:298:6: note: Assuming field 'ro_mode' is not equal to 0 if (!di->ro_mode) ^~~~~~~~~~~~ drivers/mtd/ubi/gluebi.c:298:2: note: Taking false branch if (!di->ro_mode) ^ drivers/mtd/ubi/gluebi.c:314:6: note: Assuming field 'vol_type' is not equal to UBI_DYNAMIC_VOLUME if (vi->vol_type == UBI_DYNAMIC_VOLUME) -- ^ drivers/usb/gadget/composite.c:1695:2: note: Control jumps to 'case 6:' at line 1698 switch (ctrl->bRequest) { ^ drivers/usb/gadget/composite.c:1699:7: note: Assuming field 'bRequestType' is equal to USB_DIR_IN if (ctrl->bRequestType != USB_DIR_IN) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/usb/gadget/composite.c:1699:3: note: Taking false branch if (ctrl->bRequestType != USB_DIR_IN) ^ drivers/usb/gadget/composite.c:1701:3: note: Control jumps to 'case 2:' at line 1738 switch (w_value >> 8) { ^ drivers/usb/gadget/composite.c:1739:12: note: Calling 'config_desc' value = config_desc(cdev, w_value); ^~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/usb/gadget/composite.c:560:6: note: Assuming field 'speed' is >= USB_SPEED_SUPER if (gadget->speed >= USB_SPEED_SUPER) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/usb/gadget/composite.c:560:2: note: Taking true branch if (gadget->speed >= USB_SPEED_SUPER) ^ drivers/usb/gadget/composite.c:578:6: note: Assuming 'c' is null if (c) ^ drivers/usb/gadget/composite.c:578:2: note: Taking false branch if (c) ^ drivers/usb/gadget/composite.c:581:10: note: Value assigned to 'pos' while ((pos = pos->next) != &cdev->configs) { ^~~~~~~~~~~~~~~ drivers/usb/gadget/composite.c:581:2: note: Loop condition is true. Entering loop body while ((pos = pos->next) != &cdev->configs) { ^ drivers/usb/gadget/composite.c:582:7: note: Left side of '&&' is false c = list_entry(pos, typeof(*c), list); ^ 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/usb/gadget/composite.c:582:7: note: Taking false branch c = list_entry(pos, typeof(*c), list); ^ include/linux/list.h:511:2: note: expanded from macro 'list_entry' container_of(ptr, type, member) ^ 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/usb/gadget/composite.c:582:7: note: Loop condition is false. Exiting loop c = list_entry(pos, typeof(*c), list); ^ include/linux/list.h:511:2: note: expanded from macro 'list_entry' container_of(ptr, type, member) ^ 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/usb/gadget/composite.c:585:7: note: Assuming 'c' is equal to field 'os_desc_config' if (c == cdev->os_desc_config) ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/usb/gadget/composite.c:585:3: note: Taking true branch if (c == cdev->os_desc_config) ^ drivers/usb/gadget/composite.c:586:4: note: Execution continues on line 581 continue; ^ drivers/usb/gadget/composite.c:581:16: note: Access to field 'next' results in a dereference of a null pointer (loaded from variable 'pos') while ((pos = pos->next) != &cdev->configs) { ^~~ Suppressed 18 warnings (6 in non-user code, 12 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. 21 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 19 warnings (7 in non-user code, 12 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. 20 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 19 warnings (7 in non-user code, 12 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. 21 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 20 warnings (7 in non-user code, 13 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. 19 warnings generated. Suppressed 19 warnings (7 in non-user code, 12 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. 19 warnings generated. Suppressed 19 warnings (7 in non-user code, 12 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. 19 warnings generated. Suppressed 19 warnings (7 in non-user code, 12 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. 18 warnings generated. Suppressed 18 warnings (6 in non-user code, 12 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. 19 warnings generated. Suppressed 19 warnings (7 in non-user code, 12 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. 24 warnings generated. drivers/scsi/bfa/bfad_im.c:223:3: warning: Dereference of null pointer [clang-analyzer-core.NullDereference] set_current_state(TASK_UNINTERRUPTIBLE); ^ include/linux/sched.h:141:3: note: expanded from macro 'set_current_state' current->task_state_change = _THIS_IP_; \ ^~~~~~~ arch/s390/include/asm/current.h:17:45: note: expanded from macro 'current' #define current ((struct task_struct *const)S390_lowcore.current_task) ^~~~~~~~~~~~~~~~~~~~~~~~~ arch/s390/include/asm/lowcore.h:192:22: note: expanded from macro 'S390_lowcore' #define S390_lowcore (*((struct lowcore *) 0)) ^ drivers/scsi/bfa/bfad_im.c:201:2: note: Loop condition is false. Exiting loop spin_lock_irqsave(&bfad->bfad_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/bfa/bfad_im.c:201:2: note: Loop condition is false. Exiting loop spin_lock_irqsave(&bfad->bfad_lock, flags); ^ include/linux/spinlock.h:382:43: note: expanded from macro 'spin_lock_irqsave' #define spin_lock_irqsave(lock, flags) \ ^ drivers/scsi/bfa/bfad_im.c:203:6: note: Assuming 'hal_io' is non-null if (!hal_io) { ^~~~~~~ drivers/scsi/bfa/bfad_im.c:203:2: note: Taking false branch if (!hal_io) { ^ drivers/scsi/bfa/bfad_im.c:208:6: note: Assuming 'cmnd' is equal to field 'dio' if (hal_io->dio != (struct bfad_ioim_s *) cmnd) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/bfa/bfad_im.c:208:2: note: Taking false branch if (hal_io->dio != (struct bfad_ioim_s *) cmnd) { ^ drivers/scsi/bfa/bfad_im.c:214:2: note: Assuming 'bfa_log_level' is not equal to 4 BFA_LOG(KERN_INFO, bfad, bfa_log_level, ^ drivers/scsi/bfa/bfad_drv.h:285:7: note: expanded from macro 'BFA_LOG' if (((mask) == 4) || (level[1] <= '4')) \ ^~~~~~~~~~~ drivers/scsi/bfa/bfad_im.c:214:2: note: Left side of '||' is false BFA_LOG(KERN_INFO, bfad, bfa_log_level, ^ drivers/scsi/bfa/bfad_drv.h:285:6: note: expanded from macro 'BFA_LOG' if (((mask) == 4) || (level[1] <= '4')) \ ^ drivers/scsi/bfa/bfad_im.c:214:2: note: Taking false branch BFA_LOG(KERN_INFO, bfad, bfa_log_level, ^ drivers/scsi/bfa/bfad_drv.h:285:2: note: expanded from macro 'BFA_LOG' if (((mask) == 4) || (level[1] <= '4')) \ ^ drivers/scsi/bfa/bfad_im.c:214:2: note: Loop condition is false. Exiting loop BFA_LOG(KERN_INFO, bfad, bfa_log_level, ^ drivers/scsi/bfa/bfad_drv.h:283:52: note: expanded from macro 'BFA_LOG' #define BFA_LOG(level, bfad, mask, fmt, arg...) \ ^ drivers/scsi/bfa/bfad_im.c:222:2: note: Loop condition is true. Entering loop body while ((struct bfa_ioim_s *) cmnd->host_scribble == hal_io) { ^ drivers/scsi/bfa/bfad_im.c:223:3: note: Taking false branch set_current_state(TASK_UNINTERRUPTIBLE); ^ include/linux/sched.h:140:3: note: expanded from macro 'set_current_state' WARN_ON_ONCE(is_special_task_state(state_value));\ ^ include/asm-generic/bug.h:103:2: note: expanded from macro 'WARN_ON_ONCE' if (unlikely(__ret_warn_on)) \ ^ drivers/scsi/bfa/bfad_im.c:223:3: note: Dereference of null pointer set_current_state(TASK_UNINTERRUPTIBLE); vim +/ctx +1518 drivers/scsi/elx/efct/efct_hw.c 580c0255e4effe James Smart 2021-06-01 1500 580c0255e4effe James Smart 2021-06-01 1501 static int 580c0255e4effe James Smart 2021-06-01 1502 efct_hw_command_cancel(struct efct_hw *hw) 580c0255e4effe James Smart 2021-06-01 1503 { 580c0255e4effe James Smart 2021-06-01 1504 unsigned long flags = 0; 580c0255e4effe James Smart 2021-06-01 1505 int rc = 0; 580c0255e4effe James Smart 2021-06-01 1506 580c0255e4effe James Smart 2021-06-01 1507 spin_lock_irqsave(&hw->cmd_lock, flags); 580c0255e4effe James Smart 2021-06-01 1508 580c0255e4effe James Smart 2021-06-01 1509 /* 580c0255e4effe James Smart 2021-06-01 1510 * Manually clean up remaining commands. Note: since this calls 580c0255e4effe James Smart 2021-06-01 1511 * efct_hw_command_process(), we'll also process the cmd_pending 580c0255e4effe James Smart 2021-06-01 1512 * list, so no need to manually clean that out. 580c0255e4effe James Smart 2021-06-01 1513 */ 580c0255e4effe James Smart 2021-06-01 1514 while (!list_empty(&hw->cmd_head)) { 580c0255e4effe James Smart 2021-06-01 1515 u8 mqe[SLI4_BMBX_SIZE] = { 0 }; 580c0255e4effe James Smart 2021-06-01 1516 struct efct_command_ctx *ctx; 580c0255e4effe James Smart 2021-06-01 1517 580c0255e4effe James Smart 2021-06-01 @1518 ctx = list_first_entry(&hw->cmd_head, 580c0255e4effe James Smart 2021-06-01 1519 struct efct_command_ctx, list_entry); 580c0255e4effe James Smart 2021-06-01 1520 580c0255e4effe James Smart 2021-06-01 1521 efc_log_debug(hw->os, "hung command %08x\n", 580c0255e4effe James Smart 2021-06-01 1522 !ctx ? U32_MAX : 580c0255e4effe James Smart 2021-06-01 1523 (!ctx->buf ? U32_MAX : *((u32 *)ctx->buf))); 580c0255e4effe James Smart 2021-06-01 1524 spin_unlock_irqrestore(&hw->cmd_lock, flags); 580c0255e4effe James Smart 2021-06-01 1525 rc = efct_hw_command_process(hw, -1, mqe, SLI4_BMBX_SIZE); 580c0255e4effe James Smart 2021-06-01 1526 spin_lock_irqsave(&hw->cmd_lock, flags); 580c0255e4effe James Smart 2021-06-01 1527 } 580c0255e4effe James Smart 2021-06-01 1528 580c0255e4effe James Smart 2021-06-01 1529 spin_unlock_irqrestore(&hw->cmd_lock, flags); 580c0255e4effe James Smart 2021-06-01 1530 580c0255e4effe James Smart 2021-06-01 1531 return rc; 580c0255e4effe James Smart 2021-06-01 1532 } 580c0255e4effe James Smart 2021-06-01 1533 580c0255e4effe James Smart 2021-06-01 1534 static void 580c0255e4effe James Smart 2021-06-01 1535 efct_mbox_rsp_cb(struct efct_hw *hw, int status, u8 *mqe, void *arg) 580c0255e4effe James Smart 2021-06-01 1536 { 580c0255e4effe James Smart 2021-06-01 1537 struct efct_mbox_rqst_ctx *ctx = arg; 580c0255e4effe James Smart 2021-06-01 1538 580c0255e4effe James Smart 2021-06-01 1539 if (ctx) { 580c0255e4effe James Smart 2021-06-01 1540 if (ctx->callback) 580c0255e4effe James Smart 2021-06-01 1541 (*ctx->callback)(hw->os->efcport, status, mqe, 580c0255e4effe James Smart 2021-06-01 1542 ctx->arg); 580c0255e4effe James Smart 2021-06-01 1543 580c0255e4effe James Smart 2021-06-01 1544 mempool_free(ctx, hw->mbox_rqst_pool); 580c0255e4effe James Smart 2021-06-01 1545 } 580c0255e4effe James Smart 2021-06-01 1546 } 580c0255e4effe James Smart 2021-06-01 1547 580c0255e4effe James Smart 2021-06-01 1548 int 580c0255e4effe James Smart 2021-06-01 1549 efct_issue_mbox_rqst(void *base, void *cmd, void *cb, void *arg) 580c0255e4effe James Smart 2021-06-01 1550 { 580c0255e4effe James Smart 2021-06-01 1551 struct efct_mbox_rqst_ctx *ctx; 580c0255e4effe James Smart 2021-06-01 1552 struct efct *efct = base; 580c0255e4effe James Smart 2021-06-01 1553 struct efct_hw *hw = &efct->hw; 580c0255e4effe James Smart 2021-06-01 1554 int rc; 580c0255e4effe James Smart 2021-06-01 1555 580c0255e4effe James Smart 2021-06-01 1556 /* 580c0255e4effe James Smart 2021-06-01 1557 * Allocate a callback context (which includes the mbox cmd buffer), 580c0255e4effe James Smart 2021-06-01 1558 * we need this to be persistent as the mbox cmd submission may be 580c0255e4effe James Smart 2021-06-01 1559 * queued and executed later execution. 580c0255e4effe James Smart 2021-06-01 1560 */ 580c0255e4effe James Smart 2021-06-01 1561 ctx = mempool_alloc(hw->mbox_rqst_pool, GFP_ATOMIC); 580c0255e4effe James Smart 2021-06-01 1562 if (!ctx) 580c0255e4effe James Smart 2021-06-01 1563 return -EIO; 580c0255e4effe James Smart 2021-06-01 1564 580c0255e4effe James Smart 2021-06-01 1565 ctx->callback = cb; 580c0255e4effe James Smart 2021-06-01 1566 ctx->arg = arg; 580c0255e4effe James Smart 2021-06-01 1567 580c0255e4effe James Smart 2021-06-01 1568 rc = efct_hw_command(hw, cmd, EFCT_CMD_NOWAIT, efct_mbox_rsp_cb, ctx); 580c0255e4effe James Smart 2021-06-01 1569 if (rc) { 580c0255e4effe James Smart 2021-06-01 1570 efc_log_err(efct, "issue mbox rqst failure rc:%d\n", rc); 580c0255e4effe James Smart 2021-06-01 1571 mempool_free(ctx, hw->mbox_rqst_pool); 580c0255e4effe James Smart 2021-06-01 1572 return -EIO; 580c0255e4effe James Smart 2021-06-01 1573 } 580c0255e4effe James Smart 2021-06-01 1574 580c0255e4effe James Smart 2021-06-01 1575 return 0; 580c0255e4effe James Smart 2021-06-01 1576 } 63de51327a64c7 James Smart 2021-06-01 1577 63de51327a64c7 James Smart 2021-06-01 1578 static inline struct efct_hw_io * 63de51327a64c7 James Smart 2021-06-01 1579 _efct_hw_io_alloc(struct efct_hw *hw) 63de51327a64c7 James Smart 2021-06-01 1580 { 63de51327a64c7 James Smart 2021-06-01 1581 struct efct_hw_io *io = NULL; 63de51327a64c7 James Smart 2021-06-01 1582 63de51327a64c7 James Smart 2021-06-01 1583 if (!list_empty(&hw->io_free)) { 63de51327a64c7 James Smart 2021-06-01 1584 io = list_first_entry(&hw->io_free, struct efct_hw_io, 63de51327a64c7 James Smart 2021-06-01 1585 list_entry); 63de51327a64c7 James Smart 2021-06-01 1586 list_del(&io->list_entry); 63de51327a64c7 James Smart 2021-06-01 1587 } 63de51327a64c7 James Smart 2021-06-01 1588 if (io) { 63de51327a64c7 James Smart 2021-06-01 1589 INIT_LIST_HEAD(&io->list_entry); 63de51327a64c7 James Smart 2021-06-01 1590 list_add_tail(&io->list_entry, &hw->io_inuse); 63de51327a64c7 James Smart 2021-06-01 1591 io->state = EFCT_HW_IO_STATE_INUSE; 63de51327a64c7 James Smart 2021-06-01 1592 io->abort_reqtag = U32_MAX; 63de51327a64c7 James Smart 2021-06-01 @1593 io->wq = hw->wq_cpu_array[raw_smp_processor_id()]; 63de51327a64c7 James Smart 2021-06-01 1594 if (!io->wq) { 63de51327a64c7 James Smart 2021-06-01 1595 efc_log_err(hw->os, "WQ not assigned for cpu:%d\n", 63de51327a64c7 James Smart 2021-06-01 1596 raw_smp_processor_id()); 63de51327a64c7 James Smart 2021-06-01 1597 io->wq = hw->hw_wq[0]; 63de51327a64c7 James Smart 2021-06-01 1598 } 63de51327a64c7 James Smart 2021-06-01 1599 kref_init(&io->ref); 63de51327a64c7 James Smart 2021-06-01 1600 io->release = efct_hw_io_free_internal; 63de51327a64c7 James Smart 2021-06-01 1601 } else { 63de51327a64c7 James Smart 2021-06-01 1602 atomic_add(1, &hw->io_alloc_failed_count); 63de51327a64c7 James Smart 2021-06-01 1603 } 63de51327a64c7 James Smart 2021-06-01 1604 63de51327a64c7 James Smart 2021-06-01 1605 return io; 63de51327a64c7 James Smart 2021-06-01 1606 } 63de51327a64c7 James Smart 2021-06-01 1607 :::::: The code at line 1518 was first introduced by commit :::::: 580c0255e4effe49b9974044e78a03e76d977618 scsi: elx: efct: RQ buffer, memory pool allocation and deallocation APIs :::::: TO: James Smart :::::: CC: Martin K. Petersen -- 0-DAY CI Kernel Test Service https://01.org/lkp