Re: [PATCH v1 4/7] scsi: scsi_debug: Add read support and update locate for tapes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Kai,

kernel test robot noticed the following build warnings:

[auto build test WARNING on jejb-scsi/for-next]
[also build test WARNING on mkp-scsi/for-next linus/master v6.14-rc2 next-20250210]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Kai-M-kisara/scsi-scsi_debug-First-fixes-for-tapes/20250211-031623
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git for-next
patch link:    https://lore.kernel.org/r/20250210191232.185207-5-Kai.Makisara%40kolumbus.fi
patch subject: [PATCH v1 4/7] scsi: scsi_debug: Add read support and update locate for tapes
config: x86_64-kexec (https://download.01.org/0day-ci/archive/20250211/202502112330.2jlgUZM7-lkp@xxxxxxxxx/config)
compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250211/202502112330.2jlgUZM7-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202502112330.2jlgUZM7-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

   In file included from drivers/scsi/scsi_debug.c:31:
   In file included from include/linux/scatterlist.h:8:
   In file included from include/linux/mm.h:2224:
   include/linux/vmstat.h:504:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
     504 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     505 |                            item];
         |                            ~~~~
   include/linux/vmstat.h:511:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
     511 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     512 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   include/linux/vmstat.h:524:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
     524 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     525 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   drivers/scsi/scsi_debug.c:2989:3: warning: variable 'len' is uninitialized when used here [-Wuninitialized]
    2989 |                 len += resp_partition_m_pg(ap, pcontrol, target);
         |                 ^~~
   drivers/scsi/scsi_debug.c:2854:28: note: initialize the variable 'len' to silence this warning
    2854 |         u32 alloc_len, offset, len;
         |                                   ^
         |                                    = 0
>> drivers/scsi/scsi_debug.c:3419:8: warning: variable 'i' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
    3419 |                         if (pos == 0)
         |                             ^~~~~~~~
   drivers/scsi/scsi_debug.c:3478:44: note: uninitialized use occurs here
    3478 |                         BEGINNING_OF_P_M_DETECTED_ASCQ, count - i,
         |                                                                 ^
   drivers/scsi/scsi_debug.c:3419:4: note: remove the 'if' if its condition is always false
    3419 |                         if (pos == 0)
         |                         ^~~~~~~~~~~~~
    3420 |                                 goto is_bop;
         |                                 ~~~~~~~~~~~~
    3421 |                         else {
         |                         ~~~~
   drivers/scsi/scsi_debug.c:3378:7: note: initialize the variable 'i' to silence this warning
    3378 |         int i, pos, count;
         |              ^
         |               = 0
   drivers/scsi/scsi_debug.c:3513:10: warning: variable 'i' is uninitialized when used here [-Wuninitialized]
    3513 |         for ( ; i < TAPE_MAX_PARTITIONS; i++)
         |                 ^
   drivers/scsi/scsi_debug.c:3502:7: note: initialize the variable 'i' to silence this warning
    3502 |         int i;
         |              ^
         |               = 0
   6 warnings generated.


vim +3419 drivers/scsi/scsi_debug.c

  3373	
  3374	static int resp_space(struct scsi_cmnd *scp,
  3375			struct sdebug_dev_info *devip)
  3376	{
  3377		unsigned char *cmd = scp->cmnd, code;
  3378		int i, pos, count;
  3379		struct tape_block *blp;
  3380		int partition = devip->tape_partition;
  3381	
  3382		count = get_unaligned_be24(cmd + 2);
  3383		if ((count & 0x800000) != 0) /* extend negative to 32-bit count */
  3384			count |= 0xff000000;
  3385		code = cmd[1] & 0x0f;
  3386	
  3387		pos = devip->tape_location[partition];
  3388		if (code == 0) { /* blocks */
  3389			if (count < 0) {
  3390				count = (-count);
  3391				pos -= 1;
  3392				for (i = 0, blp = devip->tape_blocks[partition] + pos; i < count;
  3393				     i++) {
  3394					if (pos < 0)
  3395						goto is_bop;
  3396					else if (IS_TAPE_BLOCK_FM(blp->fl_size))
  3397						goto is_fm;
  3398					if (i > 0) {
  3399						pos--;
  3400						blp--;
  3401					}
  3402				}
  3403			} else if (count > 0) {
  3404				for (i = 0, blp = devip->tape_blocks[partition] + pos; i < count;
  3405				     i++, pos++, blp++) {
  3406					if (IS_TAPE_BLOCK_EOD(blp->fl_size))
  3407						goto is_eod;
  3408					if (IS_TAPE_BLOCK_FM(blp->fl_size)) {
  3409						pos += 1;
  3410						goto is_fm;
  3411					}
  3412					if (pos >= devip->tape_eop[partition])
  3413						goto is_eop;
  3414				}
  3415			}
  3416		} else if (code == 1) { /* filemarks */
  3417			if (count < 0) {
  3418				count = (-count);
> 3419				if (pos == 0)
  3420					goto is_bop;
  3421				else {
  3422					for (i = 0, blp = devip->tape_blocks[partition] + pos;
  3423					     i < count && pos >= 0; i++, pos--, blp--) {
  3424						for (pos--, blp-- ; !IS_TAPE_BLOCK_FM(blp->fl_size) &&
  3425							     pos >= 0; pos--, blp--)
  3426							; /* empty */
  3427						if (pos < 0)
  3428							goto is_bop;
  3429					}
  3430				}
  3431				pos += 1;
  3432			} else if (count > 0) {
  3433				for (i = 0, blp = devip->tape_blocks[partition] + pos;
  3434				     i < count; i++, pos++, blp++) {
  3435					for ( ; !IS_TAPE_BLOCK_FM(blp->fl_size) &&
  3436						      !IS_TAPE_BLOCK_EOD(blp->fl_size) &&
  3437						      pos < devip->tape_eop[partition];
  3438					      pos++, blp++)
  3439						; /* empty */
  3440					if (IS_TAPE_BLOCK_EOD(blp->fl_size))
  3441						goto is_eod;
  3442					if (pos >= devip->tape_eop[partition])
  3443						goto is_eop;
  3444				}
  3445			}
  3446		} else if (code == 3) { /* EOD */
  3447			for (blp = devip->tape_blocks[partition] + pos;
  3448			     !IS_TAPE_BLOCK_EOD(blp->fl_size) && pos < devip->tape_eop[partition];
  3449			     pos++, blp++)
  3450				; /* empty */
  3451			if (pos >= devip->tape_eop[partition])
  3452				goto is_eop;
  3453		} else {
  3454			/* sequential filemarks not supported */
  3455			mk_sense_invalid_fld(scp, SDEB_IN_CDB, 8, -1);
  3456			return check_condition_result;
  3457		}
  3458		devip->tape_location[partition] = pos;
  3459		return 0;
  3460	
  3461	is_fm:
  3462		devip->tape_location[partition] = pos;
  3463		mk_sense_info_tape(scp, NO_SENSE, NO_ADDITIONAL_SENSE,
  3464				FILEMARK_DETECTED_ASCQ, count - i,
  3465				SENSE_FLAG_FILEMARK);
  3466		return check_condition_result;
  3467	
  3468	is_eod:
  3469		devip->tape_location[partition] = pos;
  3470		mk_sense_info_tape(scp, BLANK_CHECK, NO_ADDITIONAL_SENSE,
  3471				EOD_DETECTED_ASCQ, count - i,
  3472				0);
  3473		return check_condition_result;
  3474	
  3475	is_bop:
  3476		devip->tape_location[partition] = 0;
  3477		mk_sense_info_tape(scp, NO_SENSE, NO_ADDITIONAL_SENSE,
  3478				BEGINNING_OF_P_M_DETECTED_ASCQ, count - i,
  3479				SENSE_FLAG_EOM);
  3480		devip->tape_location[partition] = 0;
  3481		return check_condition_result;
  3482	
  3483	is_eop:
  3484		devip->tape_location[partition] = devip->tape_eop[partition] - 1;
  3485		mk_sense_info_tape(scp, MEDIUM_ERROR, NO_ADDITIONAL_SENSE,
  3486				EOP_EOM_DETECTED_ASCQ, (unsigned int)i,
  3487				SENSE_FLAG_EOM);
  3488		return check_condition_result;
  3489	}
  3490	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux