:::::: :::::: Manual check reason: "low confidence static check warning: drivers/target/target_core_alua.c:323:9: warning: Array access (from variable 'buf') results in an undefined pointer dereference [clang-analyzer-core.NullDereference]" ::::::
CC: [email protected] CC: [email protected] BCC: [email protected] In-Reply-To: <118900ffaf094a279f7799ac9d2c73265c889121.1657149962.git.thinh.ngu...@synopsys.com> References: <118900ffaf094a279f7799ac9d2c73265c889121.1657149962.git.thinh.ngu...@synopsys.com> TO: Thinh Nguyen <[email protected]> TO: [email protected] TO: [email protected] TO: "Martin K. Petersen" <[email protected]> CC: John Youn <[email protected]> CC: Felipe Balbi <[email protected]> CC: Greg KH <[email protected]> CC: Thinh Nguyen <[email protected]> CC: [email protected] Hi Thinh, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on 90557fa89d3e99286506593fd5180f699c41b152] url: https://github.com/intel-lab-lkp/linux/commits/Thinh-Nguyen/usb-gadget-f_tcm-Enhance-UASP-driver/20220707-074014 base: 90557fa89d3e99286506593fd5180f699c41b152 :::::: branch date: 5 days ago :::::: commit date: 5 days ago config: s390-randconfig-c005-20220710 (https://download.01.org/0day-ci/archive/20220712/[email protected]/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 6ce63e267aab79ca87bf63453d34dd3909ab978d) 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://github.com/intel-lab-lkp/linux/commit/9a7c7d74b2c2d3c8524342cb0278ab8b77714bad git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Thinh-Nguyen/usb-gadget-f_tcm-Enhance-UASP-driver/20220707-074014 git checkout 9a7c7d74b2c2d3c8524342cb0278ab8b77714bad # 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 <[email protected]> clang-analyzer warnings: (new ones prefixed by >>) ^ include/linux/compiler.h:58:69: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^ include/linux/compiler.h:69:2: note: expanded from macro '__trace_if_value' (cond) ? \ ^ fs/ntfs3/file.c:906:2: note: Taking false branch if (!pages) ^ include/linux/compiler.h:56:23: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ fs/ntfs3/file.c:909:2: note: Dereference of null pointer current->backing_dev_info = inode_to_bdi(inode); ^ 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:213:22: note: expanded from macro 'S390_lowcore' #define S390_lowcore (*((struct lowcore *) 0)) ^ fs/ntfs3/file.c:992:3: warning: Value stored to 'frame' is never read [clang-analyzer-deadcode.DeadStores] frame = pos >> frame_bits; ^ ~~~~~~~~~~~~~~~~~ fs/ntfs3/file.c:992:3: note: Value stored to 'frame' is never read frame = pos >> frame_bits; ^ ~~~~~~~~~~~~~~~~~ Suppressed 48 warnings (48 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. 36 warnings generated. Suppressed 36 warnings (36 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. 36 warnings generated. Suppressed 36 warnings (36 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. 37 warnings generated. Suppressed 37 warnings (36 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. 55 warnings generated. arch/s390/include/asm/spinlock.h:61:52: warning: Dereference of null pointer [clang-analyzer-core.NullDereference] return likely(__atomic_cmpxchg_bool(&lp->lock, 0, SPINLOCK_LOCKVAL)); ^ arch/s390/include/asm/spinlock.h:19:26: note: expanded from macro 'SPINLOCK_LOCKVAL' #define SPINLOCK_LOCKVAL (S390_lowcore.spinlock_lockval) ^ drivers/target/target_core_alua.c:1910:2: note: Calling 'spin_lock' spin_lock(&lun->lun_tg_pt_gp_lock); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/spinlock.h:349:2: note: Calling '__raw_spin_lock' raw_spin_lock(&lock->rlock); ^ include/linux/spinlock.h:215:29: note: expanded from macro 'raw_spin_lock' #define raw_spin_lock(lock) _raw_spin_lock(lock) ^~~~~~~~~~~~~~~~~~~~ include/linux/spinlock_api_smp.h:47:30: note: expanded from macro '_raw_spin_lock' #define _raw_spin_lock(lock) __raw_spin_lock(lock) ^~~~~~~~~~~~~~~~~~~~~ include/linux/spinlock_api_smp.h:133:2: note: Loop condition is false. Exiting loop spin_acquire(&lock->dep_map, 0, 0, _RET_IP_); ^ include/linux/lockdep.h:522:35: note: expanded from macro 'spin_acquire' #define spin_acquire(l, s, t, i) lock_acquire_exclusive(l, s, t, NULL, i) ^ include/linux/lockdep.h:518:48: note: expanded from macro 'lock_acquire_exclusive' #define lock_acquire_exclusive(l, s, t, n, i) lock_acquire(l, s, t, 0, 1, n, i) ^ include/linux/lockdep.h:356:44: note: expanded from macro 'lock_acquire' # define lock_acquire(l, s, t, r, c, n, i) do { } while (0) ^ include/linux/spinlock_api_smp.h:134:44: note: Calling 'do_raw_spin_lock' LOCK_CONTENDED(lock, do_raw_spin_trylock, do_raw_spin_lock); ^ include/linux/lockdep.h:477:2: note: expanded from macro 'LOCK_CONTENDED' lock(_lock) ^~~~~~~~~~~ include/linux/spinlock.h:185:2: note: Calling 'arch_spin_lock' arch_spin_lock(&lock->raw_lock); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/s390/include/asm/spinlock.h:66:7: note: Calling 'arch_spin_trylock_once' if (!arch_spin_trylock_once(lp)) ^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^~~~ arch/s390/include/asm/spinlock.h:61:52: note: Dereference of null pointer return likely(__atomic_cmpxchg_bool(&lp->lock, 0, SPINLOCK_LOCKVAL)); ^ arch/s390/include/asm/spinlock.h:19:26: note: expanded from macro 'SPINLOCK_LOCKVAL' #define SPINLOCK_LOCKVAL (S390_lowcore.spinlock_lockval) ^ include/linux/compiler.h:45:39: note: expanded from macro 'likely' # define likely(x) (__branch_check__(x, 1, __builtin_constant_p(x))) ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/compiler.h:33:34: note: expanded from macro '__branch_check__' ______r = __builtin_expect(!!(x), expect); \ ^ >> drivers/target/target_core_alua.c:323:9: warning: Array access (from >> variable 'buf') results in an undefined pointer dereference >> [clang-analyzer-core.NullDereference] buf[1] = supported; ~~~ ^ drivers/target/target_core_alua.c:271:2: note: 'buf' declared without an initial value unsigned char *buf; ^~~~~~~~~~~~~~~~~~ drivers/target/target_core_alua.c:274:6: note: Assuming the condition is true if (cdb[2] != 1) { ^ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^~~~ drivers/target/target_core_alua.c:274:2: note: '?' condition is false if (cdb[2] != 1) { ^ include/linux/compiler.h:56:28: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ include/linux/compiler.h:58:31: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^ drivers/target/target_core_alua.c:274:2: note: '?' condition is true if (cdb[2] != 1) { ^ include/linux/compiler.h:56:28: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ include/linux/compiler.h:58:69: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^ include/linux/compiler.h:69:2: note: expanded from macro '__trace_if_value' (cond) ? \ ^ drivers/target/target_core_alua.c:274:2: note: Taking true branch if (cdb[2] != 1) { ^ include/linux/compiler.h:56:23: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ drivers/target/target_core_alua.c:275:3: note: Left side of '&&' is true pr_warn("Invalid command format %d\n", cdb[2]); ^ include/linux/printk.h:517:2: note: expanded from macro 'pr_warn' printk(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__) ^ include/linux/printk.h:464:26: note: expanded from macro 'printk' #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__) ^ include/linux/printk.h:435:3: note: expanded from macro 'printk_index_wrap' __printk_index_emit(_fmt, NULL, NULL); \ ^ include/linux/printk.h:388:7: note: expanded from macro '__printk_index_emit' if (__builtin_constant_p(_fmt) && __builtin_constant_p(_level)) { \ ^ drivers/target/target_core_alua.c:275:3: note: '?' condition is true pr_warn("Invalid command format %d\n", cdb[2]); ^ include/linux/printk.h:517:2: note: expanded from macro 'pr_warn' printk(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__) ^ include/linux/printk.h:464:26: note: expanded from macro 'printk' #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__) ^ include/linux/printk.h:435:3: note: expanded from macro 'printk_index_wrap' __printk_index_emit(_fmt, NULL, NULL); \ ^ include/linux/printk.h:388:3: note: expanded from macro '__printk_index_emit' if (__builtin_constant_p(_fmt) && __builtin_constant_p(_level)) { \ ^ include/linux/compiler.h:56:28: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ include/linux/compiler.h:58:31: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^ drivers/target/target_core_alua.c:275:3: note: Left side of '&&' is true pr_warn("Invalid command format %d\n", cdb[2]); ^ include/linux/printk.h:517:2: note: expanded from macro 'pr_warn' printk(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__) ^ include/linux/printk.h:464:26: note: expanded from macro 'printk' #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__) ^ include/linux/printk.h:435:3: note: expanded from macro 'printk_index_wrap' __printk_index_emit(_fmt, NULL, NULL); \ ^ include/linux/printk.h:388:7: note: expanded from macro '__printk_index_emit' if (__builtin_constant_p(_fmt) && __builtin_constant_p(_level)) { \ ^ drivers/target/target_core_alua.c:275:3: note: Taking true branch pr_warn("Invalid command format %d\n", cdb[2]); ^ include/linux/printk.h:517:2: note: expanded from macro 'pr_warn' printk(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__) ^ include/linux/printk.h:464:26: note: expanded from macro 'printk' #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__) vim +/buf +323 drivers/target/target_core_alua.c c66ac9db8d4ad9 Nicholas Bellinger 2010-12-17 261 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 262 /* 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 263 * REPORT_SUPPORTED_OPERATION_CODES 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 264 * 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 265 * See spc4r17 section 6.27 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 266 */ 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 267 sense_reason_t 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 268 target_emulate_report_supported_opcodes(struct se_cmd *cmd) 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 269 { 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 270 unsigned char *cdb = cmd->t_task_cdb; 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 271 unsigned char *buf; 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 272 u8 supported = 0; 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 273 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 274 if (cdb[2] != 1) { 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 275 pr_warn("Invalid command format %d\n", cdb[2]); 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 276 goto out; 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 277 } 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 278 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 279 buf = transport_kmap_data_sg(cmd); 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 280 if (!buf) 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 281 return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE; 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 282 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 283 switch (cdb[3]) { 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 284 case INQUIRY: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 285 case MODE_SENSE: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 286 case MODE_SENSE_10: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 287 case READ_CAPACITY: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 288 case SERVICE_ACTION_IN_16: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 289 case REPORT_LUNS: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 290 case REQUEST_SENSE: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 291 case SYNCHRONIZE_CACHE: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 292 case REZERO_UNIT: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 293 case SEEK_6: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 294 case SEEK_10: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 295 case TEST_UNIT_READY: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 296 case SEND_DIAGNOSTIC: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 297 case MAINTENANCE_IN: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 298 case READ_6: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 299 case READ_10: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 300 case READ_16: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 301 case WRITE_6: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 302 case WRITE_10: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 303 case WRITE_16: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 304 case VERIFY_16: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 305 case MODE_SELECT: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 306 case MODE_SELECT_10: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 307 case START_STOP: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 308 case SECURITY_PROTOCOL_IN: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 309 case SECURITY_PROTOCOL_OUT: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 310 supported = 3; 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 311 break; 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 312 case ATA_12: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 313 case ATA_16: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 314 case VERIFY: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 315 case ZBC_IN: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 316 case ZBC_OUT: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 317 default: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 318 break; 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 319 } 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 320 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 321 transport_kunmap_data_sg(cmd); 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 322 out: 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 @323 buf[1] = supported; 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 324 target_complete_cmd(cmd, SAM_STAT_GOOD); 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 325 return 0; 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 326 } 9a7c7d74b2c2d3 Thinh Nguyen 2022-07-06 327 -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
