Hi Nitesh,

kernel test robot noticed the following build warnings:

[auto build test WARNING on 53cdf865f90ba922a854c65ed05b519f9d728424]

url:    
https://github.com/intel-lab-lkp/linux/commits/Nitesh-Shetty/block-Introduce-queue-limits-for-copy-offload-support/20230628-163126
base:   53cdf865f90ba922a854c65ed05b519f9d728424
patch link:    
https://lore.kernel.org/r/20230627183629.26571-10-nj.shetty%40samsung.com
patch subject: [PATCH v13 9/9] null_blk: add support for copy offload
config: i386-randconfig-i006-20230628 
(https://download.01.org/0day-ci/archive/20230628/202306282001.ba1qwtf0-...@intel.com/config)
compiler: clang version 15.0.7 (https://github.com/llvm/llvm-project.git 
8dfdcc7b7bf66834a761bd8de445840ef68e4d1a)
reproduce: 
(https://download.01.org/0day-ci/archive/20230628/202306282001.ba1qwtf0-...@intel.com/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 <l...@intel.com>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/202306282001.ba1qwtf0-...@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/block/null_blk/main.c:1295:2: warning: variable 'rem' is used 
>> uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
           __rq_for_each_bio(bio, req) {
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/blk-mq.h:1012:6: note: expanded from macro '__rq_for_each_bio'
           if ((rq->bio))                  \
               ^~~~~~~~~
   drivers/block/null_blk/main.c:1300:15: note: uninitialized use occurs here
           if (WARN_ON(!rem))
                        ^~~
   include/asm-generic/bug.h:123:25: note: expanded from macro 'WARN_ON'
           int __ret_warn_on = !!(condition);                              \
                                  ^~~~~~~~~
   drivers/block/null_blk/main.c:1295:2: note: remove the 'if' if its condition 
is always true
           __rq_for_each_bio(bio, req) {
           ^
   include/linux/blk-mq.h:1012:2: note: expanded from macro '__rq_for_each_bio'
           if ((rq->bio))                  \
           ^
   drivers/block/null_blk/main.c:1287:12: note: initialize the variable 'rem' 
to silence this warning
           size_t rem, temp;
                     ^
                      = 0
   1 warning generated.


vim +1295 drivers/block/null_blk/main.c

  1281  
  1282  static inline int nullb_setup_copy_write(struct nullb *nullb,
  1283                  struct request *req, bool is_fua)
  1284  {
  1285          sector_t sector_in, sector_out;
  1286          void *in, *out;
  1287          size_t rem, temp;
  1288          struct bio *bio;
  1289          unsigned long offset_in, offset_out;
  1290          struct nullb_page *t_page_in, *t_page_out;
  1291          int ret = -EIO;
  1292  
  1293          sector_out = blk_rq_pos(req);
  1294  
> 1295          __rq_for_each_bio(bio, req) {
  1296                  sector_in = bio->bi_iter.bi_sector;
  1297                  rem = bio->bi_iter.bi_size;
  1298          }
  1299  
  1300          if (WARN_ON(!rem))
  1301                  return BLK_STS_NOTSUPP;
  1302  
  1303          spin_lock_irq(&nullb->lock);
  1304          while (rem > 0) {
  1305                  temp = min_t(size_t, nullb->dev->blocksize, rem);
  1306                  offset_in = (sector_in & SECTOR_MASK) << SECTOR_SHIFT;
  1307                  offset_out = (sector_out & SECTOR_MASK) << SECTOR_SHIFT;
  1308  
  1309                  if (null_cache_active(nullb) && !is_fua)
  1310                          null_make_cache_space(nullb, PAGE_SIZE);
  1311  
  1312                  t_page_in = null_lookup_page(nullb, sector_in, false,
  1313                          !null_cache_active(nullb));
  1314                  if (!t_page_in)
  1315                          goto err;
  1316                  t_page_out = null_insert_page(nullb, sector_out,
  1317                          !null_cache_active(nullb) || is_fua);
  1318                  if (!t_page_out)
  1319                          goto err;
  1320  
  1321                  in = kmap_local_page(t_page_in->page);
  1322                  out = kmap_local_page(t_page_out->page);
  1323  
  1324                  memcpy(out + offset_out, in + offset_in, temp);
  1325                  kunmap_local(out);
  1326                  kunmap_local(in);
  1327                  __set_bit(sector_out & SECTOR_MASK, t_page_out->bitmap);
  1328  
  1329                  if (is_fua)
  1330                          null_free_sector(nullb, sector_out, true);
  1331  
  1332                  rem -= temp;
  1333                  sector_in += temp >> SECTOR_SHIFT;
  1334                  sector_out += temp >> SECTOR_SHIFT;
  1335          }
  1336  
  1337          ret = 0;
  1338  err:
  1339          spin_unlock_irq(&nullb->lock);
  1340          return ret;
  1341  }
  1342  

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

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel

Reply via email to