CC: [email protected]
CC: [email protected]
TO: Luc Van Oostenryck <[email protected]>
CC: Andrew Morton <[email protected]>
CC: Linux Memory Management List <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   5d9f4cf36721aba199975a9be7863a3ff5cd4b59
commit: d991bb1c8da842a2a0b9dc83b1005e655783f861 include/linux/compiler-gcc.h: 
sparse can do constant folding of __builtin_bswap*()
date:   7 months ago
:::::: branch date: 4 hours ago
:::::: commit date: 7 months ago
config: s390-randconfig-m031-20211123 
(https://download.01.org/0day-ci/archive/20211124/[email protected]/config.gz)
compiler: s390-linux-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

New smatch warnings:
drivers/mtd/ftl.c:220 build_maps() warn: should '(i + 
__builtin_bswap16(((part->header.FirstPhysicalEUN)))) << 
part->header.EraseUnitSize' be a 64 bit type?

Old smatch warnings:
drivers/mtd/ftl.c:347 erase_xfer() warn: should '1 << 
part->header.EraseUnitSize' be a 64 bit type?
drivers/mtd/ftl.c:605 reclaim_block() warn: inconsistent indenting

vim +220 drivers/mtd/ftl.c

^1da177e4c3f41 Linus Torvalds   2005-04-16  191  
^1da177e4c3f41 Linus Torvalds   2005-04-16  192  static int 
build_maps(partition_t *part)
^1da177e4c3f41 Linus Torvalds   2005-04-16  193  {
^1da177e4c3f41 Linus Torvalds   2005-04-16  194      erase_unit_header_t header;
3854be7712f7b4 David Woodhouse  2008-12-10  195      uint16_t xvalid, xtrans, i;
3854be7712f7b4 David Woodhouse  2008-12-10  196      unsigned blocks, j;
^1da177e4c3f41 Linus Torvalds   2005-04-16  197      int hdr_ok, ret = -1;
^1da177e4c3f41 Linus Torvalds   2005-04-16  198      ssize_t retval;
^1da177e4c3f41 Linus Torvalds   2005-04-16  199      loff_t offset;
^1da177e4c3f41 Linus Torvalds   2005-04-16  200  
^1da177e4c3f41 Linus Torvalds   2005-04-16  201      /* Set up erase unit maps 
*/
^1da177e4c3f41 Linus Torvalds   2005-04-16  202      part->DataUnits = 
le16_to_cpu(part->header.NumEraseUnits) -
^1da177e4c3f41 Linus Torvalds   2005-04-16  203         
part->header.NumTransferUnits;
6da2ec56059c3c Kees Cook        2018-06-12  204      part->EUNInfo = 
kmalloc_array(part->DataUnits, sizeof(struct eun_info_t),
^1da177e4c3f41 Linus Torvalds   2005-04-16  205                                 
   GFP_KERNEL);
^1da177e4c3f41 Linus Torvalds   2005-04-16  206      if (!part->EUNInfo)
^1da177e4c3f41 Linus Torvalds   2005-04-16  207             goto out;
^1da177e4c3f41 Linus Torvalds   2005-04-16  208      for (i = 0; i < 
part->DataUnits; i++)
^1da177e4c3f41 Linus Torvalds   2005-04-16  209         part->EUNInfo[i].Offset 
= 0xffffffff;
^1da177e4c3f41 Linus Torvalds   2005-04-16  210      part->XferInfo =
6da2ec56059c3c Kees Cook        2018-06-12  211         
kmalloc_array(part->header.NumTransferUnits,
6da2ec56059c3c Kees Cook        2018-06-12  212                        
sizeof(struct xfer_info_t),
^1da177e4c3f41 Linus Torvalds   2005-04-16  213                        
GFP_KERNEL);
^1da177e4c3f41 Linus Torvalds   2005-04-16  214      if (!part->XferInfo)
^1da177e4c3f41 Linus Torvalds   2005-04-16  215             goto out_EUNInfo;
^1da177e4c3f41 Linus Torvalds   2005-04-16  216  
^1da177e4c3f41 Linus Torvalds   2005-04-16  217      xvalid = xtrans = 0;
^1da177e4c3f41 Linus Torvalds   2005-04-16  218      for (i = 0; i < 
le16_to_cpu(part->header.NumEraseUnits); i++) {
^1da177e4c3f41 Linus Torvalds   2005-04-16  219         offset = ((i + 
le16_to_cpu(part->header.FirstPhysicalEUN))
^1da177e4c3f41 Linus Torvalds   2005-04-16 @220                       << 
part->header.EraseUnitSize);
329ad399a9b3ad Artem Bityutskiy 2011-12-23  221         ret = 
mtd_read(part->mbd.mtd, offset, sizeof(header), &retval,
^1da177e4c3f41 Linus Torvalds   2005-04-16  222                         
(unsigned char *)&header);
^1da177e4c3f41 Linus Torvalds   2005-04-16  223  
^1da177e4c3f41 Linus Torvalds   2005-04-16  224         if (ret)
^1da177e4c3f41 Linus Torvalds   2005-04-16  225             goto out_XferInfo;
^1da177e4c3f41 Linus Torvalds   2005-04-16  226  
^1da177e4c3f41 Linus Torvalds   2005-04-16  227         ret = -1;
^1da177e4c3f41 Linus Torvalds   2005-04-16  228         /* Is this a transfer 
partition? */
^1da177e4c3f41 Linus Torvalds   2005-04-16  229         hdr_ok = 
(strcmp(header.DataOrgTuple+3, "FTL100") == 0);
^1da177e4c3f41 Linus Torvalds   2005-04-16  230         if (hdr_ok && 
(le16_to_cpu(header.LogicalEUN) < part->DataUnits) &&
^1da177e4c3f41 Linus Torvalds   2005-04-16  231             
(part->EUNInfo[le16_to_cpu(header.LogicalEUN)].Offset == 0xffffffff)) {
^1da177e4c3f41 Linus Torvalds   2005-04-16  232             
part->EUNInfo[le16_to_cpu(header.LogicalEUN)].Offset = offset;
^1da177e4c3f41 Linus Torvalds   2005-04-16  233             
part->EUNInfo[le16_to_cpu(header.LogicalEUN)].EraseCount =
^1da177e4c3f41 Linus Torvalds   2005-04-16  234                 
le32_to_cpu(header.EraseCount);
^1da177e4c3f41 Linus Torvalds   2005-04-16  235             xvalid++;
^1da177e4c3f41 Linus Torvalds   2005-04-16  236         } else {
^1da177e4c3f41 Linus Torvalds   2005-04-16  237             if (xtrans == 
part->header.NumTransferUnits) {
^1da177e4c3f41 Linus Torvalds   2005-04-16  238                 
printk(KERN_NOTICE "ftl_cs: format error: too many "
^1da177e4c3f41 Linus Torvalds   2005-04-16  239                        
"transfer units!\n");
^1da177e4c3f41 Linus Torvalds   2005-04-16  240                 goto 
out_XferInfo;
^1da177e4c3f41 Linus Torvalds   2005-04-16  241             }
^1da177e4c3f41 Linus Torvalds   2005-04-16  242             if (hdr_ok && 
(le16_to_cpu(header.LogicalEUN) == 0xffff)) {
^1da177e4c3f41 Linus Torvalds   2005-04-16  243                 
part->XferInfo[xtrans].state = XFER_PREPARED;
^1da177e4c3f41 Linus Torvalds   2005-04-16  244                 
part->XferInfo[xtrans].EraseCount = le32_to_cpu(header.EraseCount);
^1da177e4c3f41 Linus Torvalds   2005-04-16  245             } else {
^1da177e4c3f41 Linus Torvalds   2005-04-16  246                 
part->XferInfo[xtrans].state = XFER_UNKNOWN;
^1da177e4c3f41 Linus Torvalds   2005-04-16  247                 /* Pick 
anything reasonable for the erase count */
^1da177e4c3f41 Linus Torvalds   2005-04-16  248                 
part->XferInfo[xtrans].EraseCount =
^1da177e4c3f41 Linus Torvalds   2005-04-16  249                     
le32_to_cpu(part->header.EraseCount);
^1da177e4c3f41 Linus Torvalds   2005-04-16  250             }
^1da177e4c3f41 Linus Torvalds   2005-04-16  251             
part->XferInfo[xtrans].Offset = offset;
^1da177e4c3f41 Linus Torvalds   2005-04-16  252             xtrans++;
^1da177e4c3f41 Linus Torvalds   2005-04-16  253         }
^1da177e4c3f41 Linus Torvalds   2005-04-16  254      }
^1da177e4c3f41 Linus Torvalds   2005-04-16  255      /* Check for format 
trouble */
^1da177e4c3f41 Linus Torvalds   2005-04-16  256      header = part->header;
^1da177e4c3f41 Linus Torvalds   2005-04-16  257      if ((xtrans != 
header.NumTransferUnits) ||
^1da177e4c3f41 Linus Torvalds   2005-04-16  258         (xvalid+xtrans != 
le16_to_cpu(header.NumEraseUnits))) {
^1da177e4c3f41 Linus Torvalds   2005-04-16  259         printk(KERN_NOTICE 
"ftl_cs: format error: erase units "
^1da177e4c3f41 Linus Torvalds   2005-04-16  260                "don't add 
up!\n");
^1da177e4c3f41 Linus Torvalds   2005-04-16  261         goto out_XferInfo;
^1da177e4c3f41 Linus Torvalds   2005-04-16  262      }
^1da177e4c3f41 Linus Torvalds   2005-04-16  263  
^1da177e4c3f41 Linus Torvalds   2005-04-16  264      /* Set up virtual page map 
*/
^1da177e4c3f41 Linus Torvalds   2005-04-16  265      blocks = 
le32_to_cpu(header.FormattedSize) >> header.BlockSize;
42bc47b35320e0 Kees Cook        2018-06-12  266      part->VirtualBlockMap = 
vmalloc(array_size(blocks, sizeof(uint32_t)));
^1da177e4c3f41 Linus Torvalds   2005-04-16  267      if (!part->VirtualBlockMap)
^1da177e4c3f41 Linus Torvalds   2005-04-16  268             goto out_XferInfo;
^1da177e4c3f41 Linus Torvalds   2005-04-16  269  
3854be7712f7b4 David Woodhouse  2008-12-10  270      
memset(part->VirtualBlockMap, 0xff, blocks * sizeof(uint32_t));
^1da177e4c3f41 Linus Torvalds   2005-04-16  271      part->BlocksPerUnit = (1 
<< header.EraseUnitSize) >> header.BlockSize;
^1da177e4c3f41 Linus Torvalds   2005-04-16  272  
6da2ec56059c3c Kees Cook        2018-06-12  273      part->bam_cache = 
kmalloc_array(part->BlocksPerUnit, sizeof(uint32_t),
^1da177e4c3f41 Linus Torvalds   2005-04-16  274                                 
     GFP_KERNEL);
^1da177e4c3f41 Linus Torvalds   2005-04-16  275      if (!part->bam_cache)
^1da177e4c3f41 Linus Torvalds   2005-04-16  276             goto 
out_VirtualBlockMap;
^1da177e4c3f41 Linus Torvalds   2005-04-16  277  
^1da177e4c3f41 Linus Torvalds   2005-04-16  278      part->bam_index = 0xffff;
^1da177e4c3f41 Linus Torvalds   2005-04-16  279      part->FreeTotal = 0;
^1da177e4c3f41 Linus Torvalds   2005-04-16  280  
^1da177e4c3f41 Linus Torvalds   2005-04-16  281      for (i = 0; i < 
part->DataUnits; i++) {
^1da177e4c3f41 Linus Torvalds   2005-04-16  282         part->EUNInfo[i].Free = 
0;
^1da177e4c3f41 Linus Torvalds   2005-04-16  283         
part->EUNInfo[i].Deleted = 0;
^1da177e4c3f41 Linus Torvalds   2005-04-16  284         offset = 
part->EUNInfo[i].Offset + le32_to_cpu(header.BAMOffset);
^1da177e4c3f41 Linus Torvalds   2005-04-16  285  
329ad399a9b3ad Artem Bityutskiy 2011-12-23  286         ret = 
mtd_read(part->mbd.mtd, offset,
3854be7712f7b4 David Woodhouse  2008-12-10  287                         
part->BlocksPerUnit * sizeof(uint32_t), &retval,
^1da177e4c3f41 Linus Torvalds   2005-04-16  288                         
(unsigned char *)part->bam_cache);
^1da177e4c3f41 Linus Torvalds   2005-04-16  289  
^1da177e4c3f41 Linus Torvalds   2005-04-16  290         if (ret)
^1da177e4c3f41 Linus Torvalds   2005-04-16  291                 goto 
out_bam_cache;
^1da177e4c3f41 Linus Torvalds   2005-04-16  292  
^1da177e4c3f41 Linus Torvalds   2005-04-16  293         for (j = 0; j < 
part->BlocksPerUnit; j++) {
^1da177e4c3f41 Linus Torvalds   2005-04-16  294             if 
(BLOCK_FREE(le32_to_cpu(part->bam_cache[j]))) {
^1da177e4c3f41 Linus Torvalds   2005-04-16  295                 
part->EUNInfo[i].Free++;
^1da177e4c3f41 Linus Torvalds   2005-04-16  296                 
part->FreeTotal++;
^1da177e4c3f41 Linus Torvalds   2005-04-16  297             } else if 
((BLOCK_TYPE(le32_to_cpu(part->bam_cache[j])) == BLOCK_DATA) &&
^1da177e4c3f41 Linus Torvalds   2005-04-16  298                      
(BLOCK_NUMBER(le32_to_cpu(part->bam_cache[j])) < blocks))
^1da177e4c3f41 Linus Torvalds   2005-04-16  299                 
part->VirtualBlockMap[BLOCK_NUMBER(le32_to_cpu(part->bam_cache[j]))] =
^1da177e4c3f41 Linus Torvalds   2005-04-16  300                     (i << 
header.EraseUnitSize) + (j << header.BlockSize);
^1da177e4c3f41 Linus Torvalds   2005-04-16  301             else if 
(BLOCK_DELETED(le32_to_cpu(part->bam_cache[j])))
^1da177e4c3f41 Linus Torvalds   2005-04-16  302                 
part->EUNInfo[i].Deleted++;
^1da177e4c3f41 Linus Torvalds   2005-04-16  303         }
^1da177e4c3f41 Linus Torvalds   2005-04-16  304      }
^1da177e4c3f41 Linus Torvalds   2005-04-16  305  
^1da177e4c3f41 Linus Torvalds   2005-04-16  306      ret = 0;
^1da177e4c3f41 Linus Torvalds   2005-04-16  307      goto out;
^1da177e4c3f41 Linus Torvalds   2005-04-16  308  
^1da177e4c3f41 Linus Torvalds   2005-04-16  309  out_bam_cache:
^1da177e4c3f41 Linus Torvalds   2005-04-16  310      kfree(part->bam_cache);
^1da177e4c3f41 Linus Torvalds   2005-04-16  311  out_VirtualBlockMap:
^1da177e4c3f41 Linus Torvalds   2005-04-16  312      
vfree(part->VirtualBlockMap);
^1da177e4c3f41 Linus Torvalds   2005-04-16  313  out_XferInfo:
^1da177e4c3f41 Linus Torvalds   2005-04-16  314      kfree(part->XferInfo);
^1da177e4c3f41 Linus Torvalds   2005-04-16  315  out_EUNInfo:
^1da177e4c3f41 Linus Torvalds   2005-04-16  316      kfree(part->EUNInfo);
^1da177e4c3f41 Linus Torvalds   2005-04-16  317  out:
^1da177e4c3f41 Linus Torvalds   2005-04-16  318      return ret;
^1da177e4c3f41 Linus Torvalds   2005-04-16  319  } /* build_maps */
^1da177e4c3f41 Linus Torvalds   2005-04-16  320  

:::::: The code at line 220 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2

:::::: TO: Linus Torvalds <[email protected]>
:::::: CC: Linus Torvalds <[email protected]>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to