lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Mon, 1 Jun 2020 11:02:20 -0700
From:   Nick Desaulniers <ndesaulniers@...gle.com>
To:     kbuild test robot <lkp@...el.com>
Cc:     "Ritesh, Harjani," <riteshh@...ux.ibm.com>,
        kbuild-all@...ts.01.org,
        clang-built-linux <clang-built-linux@...glegroups.com>,
        linux-ext4@...r.kernel.org, "Theodore Ts'o" <tytso@....edu>,
        Philip Li <philip.li@...el.com>
Subject: Re: [ext4:dev 41/50] fs/ext4/mballoc.c:1494:2: error: invalid input
 size for constraint 'qi'

nevermind this failure. Clang doesn't support i386 yet (WIP).

On Mon, Jun 1, 2020 at 4:41 AM kbuild test robot <lkp@...el.com> wrote:
>
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git dev
> head:   38bd76b9696c5582dcef4ab1af437e0666021f65
> commit: 42f56b7a4a7db127a9d281da584152dc3d525d25 [41/50] ext4: mballoc: introduce pcpu seqcnt for freeing PA to improve ENOSPC handling
> config: i386-randconfig-a014-20200601 (attached as .config)
> compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 2388a096e7865c043e83ece4e26654bd3d1a20d5)
> 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 i386 cross compiling tool for clang build
>         # apt-get install binutils-i386-linux-gnu
>         git checkout 42f56b7a4a7db127a9d281da584152dc3d525d25
>         # save the attached .config to linux build tree
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kbuild test robot <lkp@...el.com>
>
> All errors (new ones prefixed by >>, old ones prefixed by <<):
>
> >> fs/ext4/mballoc.c:1494:2: error: invalid input size for constraint 'qi'
> this_cpu_inc(discard_pa_seq);
> ^
> include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc'
> #define this_cpu_inc(pcp)               this_cpu_add(pcp, 1)
> ^
> include/linux/percpu-defs.h:509:33: note: expanded from macro 'this_cpu_add'
> #define this_cpu_add(pcp, val)          __pcpu_size_call(this_cpu_add_, pcp, val)
> ^
> include/linux/percpu-defs.h:377:11: note: expanded from macro '__pcpu_size_call'
> case 1: stem##1(variable, __VA_ARGS__);break;                                      ^
> <scratch space>:160:1: note: expanded from here
> this_cpu_add_1
> ^
> arch/x86/include/asm/percpu.h:432:34: note: expanded from macro 'this_cpu_add_1'
> #define this_cpu_add_1(pcp, val)        percpu_add_op(volatile, (pcp), val)
> ^
> arch/x86/include/asm/percpu.h:147:16: note: expanded from macro 'percpu_add_op'
> : "qi" ((pao_T__)(val)));                                                          ^
> >> fs/ext4/mballoc.c:1494:2: error: invalid input size for constraint 'qi'
> include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc'
> #define this_cpu_inc(pcp)               this_cpu_add(pcp, 1)
> ^
> include/linux/percpu-defs.h:509:33: note: expanded from macro 'this_cpu_add'
> #define this_cpu_add(pcp, val)          __pcpu_size_call(this_cpu_add_, pcp, val)
> ^
> include/linux/percpu-defs.h:378:11: note: expanded from macro '__pcpu_size_call'
> case 2: stem##2(variable, __VA_ARGS__);break;                                      ^
> <scratch space>:185:1: note: expanded from here
> this_cpu_add_2
> ^
> arch/x86/include/asm/percpu.h:433:34: note: expanded from macro 'this_cpu_add_2'
> #define this_cpu_add_2(pcp, val)        percpu_add_op(volatile, (pcp), val)
> ^
> arch/x86/include/asm/percpu.h:147:16: note: expanded from macro 'percpu_add_op'
> : "qi" ((pao_T__)(val)));                                                          ^
> >> fs/ext4/mballoc.c:1494:2: error: invalid input size for constraint 'qi'
> include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc'
> #define this_cpu_inc(pcp)               this_cpu_add(pcp, 1)
> ^
> include/linux/percpu-defs.h:509:33: note: expanded from macro 'this_cpu_add'
> #define this_cpu_add(pcp, val)          __pcpu_size_call(this_cpu_add_, pcp, val)
> ^
> include/linux/percpu-defs.h:379:11: note: expanded from macro '__pcpu_size_call'
> case 4: stem##4(variable, __VA_ARGS__);break;                                      ^
> <scratch space>:210:1: note: expanded from here
> this_cpu_add_4
> ^
> arch/x86/include/asm/percpu.h:434:34: note: expanded from macro 'this_cpu_add_4'
> #define this_cpu_add_4(pcp, val)        percpu_add_op(volatile, (pcp), val)
> ^
> arch/x86/include/asm/percpu.h:147:16: note: expanded from macro 'percpu_add_op'
> : "qi" ((pao_T__)(val)));                                                          ^
> fs/ext4/mballoc.c:1636:2: error: invalid input size for constraint 'qi'
> this_cpu_inc(discard_pa_seq);
> ^
> include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc'
> #define this_cpu_inc(pcp)               this_cpu_add(pcp, 1)
> ^
> include/linux/percpu-defs.h:509:33: note: expanded from macro 'this_cpu_add'
> #define this_cpu_add(pcp, val)          __pcpu_size_call(this_cpu_add_, pcp, val)
> ^
> include/linux/percpu-defs.h:377:11: note: expanded from macro '__pcpu_size_call'
> case 1: stem##1(variable, __VA_ARGS__);break;                                      ^
> <scratch space>:12:1: note: expanded from here
> this_cpu_add_1
> ^
> arch/x86/include/asm/percpu.h:432:34: note: expanded from macro 'this_cpu_add_1'
> #define this_cpu_add_1(pcp, val)        percpu_add_op(volatile, (pcp), val)
> ^
> arch/x86/include/asm/percpu.h:147:16: note: expanded from macro 'percpu_add_op'
> : "qi" ((pao_T__)(val)));                                                          ^
> fs/ext4/mballoc.c:1636:2: error: invalid input size for constraint 'qi'
> include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc'
> #define this_cpu_inc(pcp)               this_cpu_add(pcp, 1)
> ^
> include/linux/percpu-defs.h:509:33: note: expanded from macro 'this_cpu_add'
> #define this_cpu_add(pcp, val)          __pcpu_size_call(this_cpu_add_, pcp, val)
> ^
> include/linux/percpu-defs.h:378:11: note: expanded from macro '__pcpu_size_call'
> case 2: stem##2(variable, __VA_ARGS__);break;                                      ^
> <scratch space>:37:1: note: expanded from here
> this_cpu_add_2
> ^
> arch/x86/include/asm/percpu.h:433:34: note: expanded from macro 'this_cpu_add_2'
> #define this_cpu_add_2(pcp, val)        percpu_add_op(volatile, (pcp), val)
> ^
> arch/x86/include/asm/percpu.h:147:16: note: expanded from macro 'percpu_add_op'
> : "qi" ((pao_T__)(val)));                                                          ^
> fs/ext4/mballoc.c:1636:2: error: invalid input size for constraint 'qi'
> include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc'
> #define this_cpu_inc(pcp)               this_cpu_add(pcp, 1)
> ^
> include/linux/percpu-defs.h:509:33: note: expanded from macro 'this_cpu_add'
> #define this_cpu_add(pcp, val)          __pcpu_size_call(this_cpu_add_, pcp, val)
> ^
> include/linux/percpu-defs.h:379:11: note: expanded from macro '__pcpu_size_call'
> case 4: stem##4(variable, __VA_ARGS__);break;                                      ^
> <scratch space>:62:1: note: expanded from here
> this_cpu_add_4
> ^
> arch/x86/include/asm/percpu.h:434:34: note: expanded from macro 'this_cpu_add_4'
> #define this_cpu_add_4(pcp, val)        percpu_add_op(volatile, (pcp), val)
> ^
> arch/x86/include/asm/percpu.h:147:16: note: expanded from macro 'percpu_add_op'
> : "qi" ((pao_T__)(val)));                                                          ^
> fs/ext4/mballoc.c:3996:2: error: invalid input size for constraint 'qi'
> this_cpu_inc(discard_pa_seq);
> ^
> include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc'
> #define this_cpu_inc(pcp)               this_cpu_add(pcp, 1)
> ^
> include/linux/percpu-defs.h:509:33: note: expanded from macro 'this_cpu_add'
> #define this_cpu_add(pcp, val)          __pcpu_size_call(this_cpu_add_, pcp, val)
> ^
> include/linux/percpu-defs.h:377:11: note: expanded from macro '__pcpu_size_call'
> case 1: stem##1(variable, __VA_ARGS__);break;                                      ^
> <scratch space>:150:1: note: expanded from here
> this_cpu_add_1
> ^
> arch/x86/include/asm/percpu.h:432:34: note: expanded from macro 'this_cpu_add_1'
> #define this_cpu_add_1(pcp, val)        percpu_add_op(volatile, (pcp), val)
> ^
> arch/x86/include/asm/percpu.h:147:16: note: expanded from macro 'percpu_add_op'
> : "qi" ((pao_T__)(val)));                                                          ^
> fs/ext4/mballoc.c:3996:2: error: invalid input size for constraint 'qi'
> include/linux/percpu-defs.h:520:28: note: expanded from macro 'this_cpu_inc'
>
> vim +/qi +1494 fs/ext4/mballoc.c
>
>   1473
>   1474  static void mb_free_blocks(struct inode *inode, struct ext4_buddy *e4b,
>   1475                             int first, int count)
>   1476  {
>   1477          int left_is_free = 0;
>   1478          int right_is_free = 0;
>   1479          int block;
>   1480          int last = first + count - 1;
>   1481          struct super_block *sb = e4b->bd_sb;
>   1482
>   1483          if (WARN_ON(count == 0))
>   1484                  return;
>   1485          BUG_ON(last >= (sb->s_blocksize << 3));
>   1486          assert_spin_locked(ext4_group_lock_ptr(sb, e4b->bd_group));
>   1487          /* Don't bother if the block group is corrupt. */
>   1488          if (unlikely(EXT4_MB_GRP_BBITMAP_CORRUPT(e4b->bd_info)))
>   1489                  return;
>   1490
>   1491          mb_check_buddy(e4b);
>   1492          mb_free_blocks_double(inode, e4b, first, count);
>   1493
> > 1494          this_cpu_inc(discard_pa_seq);
>   1495          e4b->bd_info->bb_free += count;
>   1496          if (first < e4b->bd_info->bb_first_free)
>   1497                  e4b->bd_info->bb_first_free = first;
>   1498
>   1499          /* access memory sequentially: check left neighbour,
>   1500           * clear range and then check right neighbour
>   1501           */
>   1502          if (first != 0)
>   1503                  left_is_free = !mb_test_bit(first - 1, e4b->bd_bitmap);
>   1504          block = mb_test_and_clear_bits(e4b->bd_bitmap, first, count);
>   1505          if (last + 1 < EXT4_SB(sb)->s_mb_maxs[0])
>   1506                  right_is_free = !mb_test_bit(last + 1, e4b->bd_bitmap);
>   1507
>   1508          if (unlikely(block != -1)) {
>   1509                  struct ext4_sb_info *sbi = EXT4_SB(sb);
>   1510                  ext4_fsblk_t blocknr;
>   1511
>   1512                  blocknr = ext4_group_first_block_no(sb, e4b->bd_group);
>   1513                  blocknr += EXT4_C2B(sbi, block);
>   1514                  ext4_grp_locked_error(sb, e4b->bd_group,
>   1515                                        inode ? inode->i_ino : 0,
>   1516                                        blocknr,
>   1517                                        "freeing already freed block "
>   1518                                        "(bit %u); block bitmap corrupt.",
>   1519                                        block);
>   1520                  ext4_mark_group_bitmap_corrupted(sb, e4b->bd_group,
>   1521                                  EXT4_GROUP_INFO_BBITMAP_CORRUPT);
>   1522                  mb_regenerate_buddy(e4b);
>   1523                  goto done;
>   1524          }
>   1525
>   1526          /* let's maintain fragments counter */
>   1527          if (left_is_free && right_is_free)
>   1528                  e4b->bd_info->bb_fragments--;
>   1529          else if (!left_is_free && !right_is_free)
>   1530                  e4b->bd_info->bb_fragments++;
>   1531
>   1532          /* buddy[0] == bd_bitmap is a special case, so handle
>   1533           * it right away and let mb_buddy_mark_free stay free of
>   1534           * zero order checks.
>   1535           * Check if neighbours are to be coaleasced,
>   1536           * adjust bitmap bb_counters and borders appropriately.
>   1537           */
>   1538          if (first & 1) {
>   1539                  first += !left_is_free;
>   1540                  e4b->bd_info->bb_counters[0] += left_is_free ? -1 : 1;
>   1541          }
>   1542          if (!(last & 1)) {
>   1543                  last -= !right_is_free;
>   1544                  e4b->bd_info->bb_counters[0] += right_is_free ? -1 : 1;
>   1545          }
>   1546
>   1547          if (first <= last)
>   1548                  mb_buddy_mark_free(e4b, first >> 1, last >> 1);
>   1549
>   1550  done:
>   1551          mb_set_largest_free_order(sb, e4b->bd_info);
>   1552          mb_check_buddy(e4b);
>   1553  }
>   1554
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
>
> --
> You received this message because you are subscribed to the Google Groups "Clang Built Linux" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to clang-built-linux+unsubscribe@...glegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/202006011907.ocBGNEZT%25lkp%40intel.com.



-- 
Thanks,
~Nick Desaulniers

Powered by blists - more mailing lists