:::::: 
:::::: 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]

Reply via email to