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  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <201804021443.GNDXmtKG%fengguang.wu@intel.com>
Date:   Mon, 2 Apr 2018 15:00:57 +0800
From:   kbuild test robot <lkp@...el.com>
To:     David Howells <dhowells@...hat.com>
Cc:     kbuild-all@...org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 07/45] C++: Define a header with some C++ type traits for
 type checking

Hi David,

I love your patch! Yet something to improve:

[auto build test ERROR on v4.16-rc7]
[cannot apply to linus/master tip/x86/core tip/locking/core v4.16 next-20180329]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/David-Howells/C-Convert-the-kernel-to-C/20180402-120344
config: x86_64-randconfig-x016-201813 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

Note: the linux-review/David-Howells/C-Convert-the-kernel-to-C/20180402-120344 HEAD 6389202e6d769ba42860793ff4bb839d768ced5a builds fine.
      It only hurts bisectibility.

All errors (new ones prefixed by >>):

                    from include/linux/kernel.h:12,
                    from include/asm-generic/bug.h:18,
                    from arch/x86/include/asm/bug.h:83,
                    from include/linux/bug.h:5,
                    from arch/x86/purgatory/purgatory.c:13:
   include/asm-generic/bitops/le.h: In function 'int test_and_clear_bit_le(int, void*)':
   include/asm-generic/bitops/le.h:85:55: error: invalid conversion from 'void*' to 'volatile long unsigned int*' [-fpermissive]
     return test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
                                                          ^
   In file included from include/linux/bitops.h:38:0,
                    from include/linux/kernel.h:12,
                    from include/asm-generic/bug.h:18,
                    from arch/x86/include/asm/bug.h:83,
                    from include/linux/bug.h:5,
                    from arch/x86/purgatory/purgatory.c:13:
   arch/x86/include/asm/bitops.h:265:29: note:   initializing argument 2 of 'bool test_and_clear_bit(long int, volatile long unsigned int*)'
    static __always_inline bool test_and_clear_bit(long nr, volatile unsigned long *addr)
                                ^~~~~~~~~~~~~~~~~~
   In file included from arch/x86/include/asm/bitops.h:521:0,
                    from include/linux/bitops.h:38,
                    from include/linux/kernel.h:12,
                    from include/asm-generic/bug.h:18,
                    from arch/x86/include/asm/bug.h:83,
                    from include/linux/bug.h:5,
                    from arch/x86/purgatory/purgatory.c:13:
   include/asm-generic/bitops/le.h: In function 'int __test_and_set_bit_le(int, void*)':
   include/asm-generic/bitops/le.h:90:55: error: invalid conversion from 'void*' to 'volatile long unsigned int*' [-fpermissive]
     return __test_and_set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
                                                          ^
   In file included from include/linux/bitops.h:38:0,
                    from include/linux/kernel.h:12,
                    from include/asm-generic/bug.h:18,
                    from arch/x86/include/asm/bug.h:83,
                    from include/linux/bug.h:5,
                    from arch/x86/purgatory/purgatory.c:13:
   arch/x86/include/asm/bitops.h:246:29: note:   initializing argument 2 of 'bool __test_and_set_bit(long int, volatile long unsigned int*)'
    static __always_inline bool __test_and_set_bit(long nr, volatile unsigned long *addr)
                                ^~~~~~~~~~~~~~~~~~
   In file included from arch/x86/include/asm/bitops.h:521:0,
                    from include/linux/bitops.h:38,
                    from include/linux/kernel.h:12,
                    from include/asm-generic/bug.h:18,
                    from arch/x86/include/asm/bug.h:83,
                    from include/linux/bug.h:5,
                    from arch/x86/purgatory/purgatory.c:13:
   include/asm-generic/bitops/le.h: In function 'int __test_and_clear_bit_le(int, void*)':
   include/asm-generic/bitops/le.h:95:57: error: invalid conversion from 'void*' to 'volatile long unsigned int*' [-fpermissive]
     return __test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
                                                            ^
   In file included from include/linux/bitops.h:38:0,
                    from include/linux/kernel.h:12,
                    from include/asm-generic/bug.h:18,
                    from arch/x86/include/asm/bug.h:83,
                    from include/linux/bug.h:5,
                    from arch/x86/purgatory/purgatory.c:13:
   arch/x86/include/asm/bitops.h:287:29: note:   initializing argument 2 of 'bool __test_and_clear_bit(long int, volatile long unsigned int*)'
    static __always_inline bool __test_and_clear_bit(long nr, volatile unsigned long *addr)
                                ^~~~~~~~~~~~~~~~~~~~
   In file included from include/linux/kernel.h:7:0,
                    from include/asm-generic/bug.h:18,
                    from arch/x86/include/asm/bug.h:83,
                    from include/linux/bug.h:5,
                    from arch/x86/purgatory/purgatory.c:13:
   include/linux/printk.h: At global scope:
   include/linux/linkage.h:16:31: error: expected unqualified-id before string constant
    #define CPP_ASMLINKAGE extern "C"
                                  ^
   include/linux/linkage.h:22:20: note: in expansion of macro 'CPP_ASMLINKAGE'
    #define asmlinkage CPP_ASMLINKAGE
                       ^~~~~~~~~~~~~~
   include/linux/printk.h:141:8: note: in expansion of macro 'asmlinkage'
    extern asmlinkage __printf(1, 2)
           ^~~~~~~~~~
   include/linux/linkage.h:16:31: error: expected unqualified-id before string constant
    #define CPP_ASMLINKAGE extern "C"
                                  ^
   include/linux/linkage.h:22:20: note: in expansion of macro 'CPP_ASMLINKAGE'
    #define asmlinkage CPP_ASMLINKAGE
                       ^~~~~~~~~~~~~~
   include/linux/printk.h:282:8: note: in expansion of macro 'asmlinkage'
    extern asmlinkage void dump_stack(void) __cold;
           ^~~~~~~~~~
   In file included from include/linux/kernel.h:16:0,
                    from include/asm-generic/bug.h:18,
                    from arch/x86/include/asm/bug.h:83,
                    from include/linux/bug.h:5,
                    from arch/x86/purgatory/purgatory.c:13:
   arch/x86/purgatory/purgatory.c: In function 'int verify_sha256_digest()':
   include/linux/build_bug.h:29:45: error: types may not be defined in 'sizeof' expressions
    #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:(-!!(e)); }))
                                                ^
   include/linux/compiler-gcc.h:66:28: note: in expansion of macro 'BUILD_BUG_ON_ZERO'
    #define __must_be_array(a) BUILD_BUG_ON_ZERO(__is_array(a))
                               ^~~~~~~~~~~~~~~~~
   include/linux/kernel.h:72:59: note: in expansion of macro '__must_be_array'
    #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
                                                              ^~~~~~~~~~~~~~~
   arch/x86/purgatory/purgatory.c:48:32: note: in expansion of macro 'ARRAY_SIZE'
     end = purgatory_sha_regions + ARRAY_SIZE(purgatory_sha_regions);
                                   ^~~~~~~~~~
>> include/linux/build_bug.h:29:58: error: negative width in bit-field 'verify_sha256_digest()::<unnamed struct>::<anonymous>'
    #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:(-!!(e)); }))
                                                             ^
   include/linux/compiler-gcc.h:66:28: note: in expansion of macro 'BUILD_BUG_ON_ZERO'
    #define __must_be_array(a) BUILD_BUG_ON_ZERO(__is_array(a))
                               ^~~~~~~~~~~~~~~~~
   include/linux/kernel.h:72:59: note: in expansion of macro '__must_be_array'
    #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
                                                              ^~~~~~~~~~~~~~~
   arch/x86/purgatory/purgatory.c:48:32: note: in expansion of macro 'ARRAY_SIZE'
     end = purgatory_sha_regions + ARRAY_SIZE(purgatory_sha_regions);
                                   ^~~~~~~~~~
   make[2]: *** [arch/x86/purgatory/purgatory.o] Error 1
   make[2]: *** [arch/x86/purgatory/sha256.o] Error 1
   make[2]: Target 'arch/x86/purgatory/kexec-purgatory.c' not remade because of errors.
   make[1]: *** [archprepare] Error 2
   make[1]: Target 'prepare' not remade because of errors.
   make: *** [sub-make] Error 2

vim +29 include/linux/build_bug.h

bc6245e5 Ian Abbott 2017-07-10  16  
bc6245e5 Ian Abbott 2017-07-10  17  /* Force a compilation error if a constant expression is not a power of 2 */
bc6245e5 Ian Abbott 2017-07-10  18  #define __BUILD_BUG_ON_NOT_POWER_OF_2(n)	\
bc6245e5 Ian Abbott 2017-07-10  19  	BUILD_BUG_ON(((n) & ((n) - 1)) != 0)
bc6245e5 Ian Abbott 2017-07-10  20  #define BUILD_BUG_ON_NOT_POWER_OF_2(n)			\
bc6245e5 Ian Abbott 2017-07-10  21  	BUILD_BUG_ON((n) == 0 || (((n) & ((n) - 1)) != 0))
bc6245e5 Ian Abbott 2017-07-10  22  
bc6245e5 Ian Abbott 2017-07-10  23  /*
bc6245e5 Ian Abbott 2017-07-10  24   * Force a compilation error if condition is true, but also produce a
bc6245e5 Ian Abbott 2017-07-10  25   * result (of value 0 and type size_t), so the expression can be used
bc6245e5 Ian Abbott 2017-07-10  26   * e.g. in a structure initializer (or where-ever else comma expressions
bc6245e5 Ian Abbott 2017-07-10  27   * aren't permitted).
bc6245e5 Ian Abbott 2017-07-10  28   */
bc6245e5 Ian Abbott 2017-07-10 @29  #define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:(-!!(e)); }))
bc6245e5 Ian Abbott 2017-07-10  30  

:::::: The code at line 29 was first introduced by commit
:::::: bc6245e5efd70c41eaf9334b1b5e646745cb0fb3 bug: split BUILD_BUG stuff out into <linux/build_bug.h>

:::::: TO: Ian Abbott <abbotti@....co.uk>
:::::: CC: Linus Torvalds <torvalds@...ux-foundation.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Download attachment ".config.gz" of type "application/gzip" (28314 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ