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 PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 31 Aug 2018 19:05:11 +0200 From: Miguel Ojeda <miguel.ojeda.sandonis@...il.com> To: Linus Torvalds <torvalds@...ux-foundation.org> Cc: linux-kernel@...r.kernel.org, Miguel Ojeda <miguel.ojeda.sandonis@...il.com>, Eli Friedman <efriedma@...eaurora.org>, Christopher Li <sparse@...isli.org>, Kees Cook <keescook@...omium.org>, Ingo Molnar <mingo@...nel.org>, Geert Uytterhoeven <geert@...ux-m68k.org>, Arnd Bergmann <arnd@...db.de>, Greg Kroah-Hartman <gregkh@...uxfoundation.org>, Masahiro Yamada <yamada.masahiro@...ionext.com>, Joe Perches <joe@...ches.com>, Dominique Martinet <asmadeus@...ewreck.org>, Nick Desaulniers <ndesaulniers@...gle.com> Subject: [PATCH 4/7] Compiler Attributes: homogenize __must_be_array Different definitions of __must_be_array: * gcc: disabled for __CHECKER__ * clang: same definition as gcc's, but without __CHECKER__ * intel: the comment claims __builtin_types_compatible_p() is unsupported; but icc seems to support it since 13.0.1 (released in 2012). See https://godbolt.org/z/S0l6QQ Therefore, we can remove all of them and have a single definition in compiler.h Cc: Eli Friedman <efriedma@...eaurora.org> Cc: Christopher Li <sparse@...isli.org> Cc: Kees Cook <keescook@...omium.org> Cc: Ingo Molnar <mingo@...nel.org> Cc: Geert Uytterhoeven <geert@...ux-m68k.org> Cc: Arnd Bergmann <arnd@...db.de> Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org> Cc: Masahiro Yamada <yamada.masahiro@...ionext.com> Cc: Joe Perches <joe@...ches.com> Cc: Dominique Martinet <asmadeus@...ewreck.org> Cc: Nick Desaulniers <ndesaulniers@...gle.com> Cc: Linus Torvalds <torvalds@...ux-foundation.org> Signed-off-by: Miguel Ojeda <miguel.ojeda.sandonis@...il.com> --- include/linux/compiler-clang.h | 1 - include/linux/compiler-gcc.h | 7 ------- include/linux/compiler-intel.h | 3 --- include/linux/compiler.h | 7 +++++++ 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/include/linux/compiler-clang.h b/include/linux/compiler-clang.h index efda74f4eeba..0aee694d3ab8 100644 --- a/include/linux/compiler-clang.h +++ b/include/linux/compiler-clang.h @@ -41,6 +41,5 @@ * compilers, like ICC. */ #define barrier() __asm__ __volatile__("" : : : "memory") -#define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0])) #define __assume_aligned(a, ...) \ __attribute__((assume_aligned(a, ## __VA_ARGS__))) diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h index dbfbecf703f8..66e1eb8822d9 100644 --- a/include/linux/compiler-gcc.h +++ b/include/linux/compiler-gcc.h @@ -68,13 +68,6 @@ */ #define uninitialized_var(x) x = x -#ifdef __CHECKER__ -#define __must_be_array(a) 0 -#else -/* &a[0] degrades to a pointer: a different type from an array */ -#define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0])) -#endif - #ifdef RETPOLINE #define __noretpoline __attribute__((indirect_branch("keep"))) #endif diff --git a/include/linux/compiler-intel.h b/include/linux/compiler-intel.h index 4c7f9befa9f6..18bd4362deaa 100644 --- a/include/linux/compiler-intel.h +++ b/include/linux/compiler-intel.h @@ -29,9 +29,6 @@ */ #define OPTIMIZER_HIDE_VAR(var) barrier() -/* Intel ECC compiler doesn't support __builtin_types_compatible_p() */ -#define __must_be_array(a) 0 - #endif /* icc has this, but it's called _bswap16 */ diff --git a/include/linux/compiler.h b/include/linux/compiler.h index e0e55eb3f242..e4a702f99e50 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h @@ -357,4 +357,11 @@ static inline void *offset_to_ptr(const int *off) compiletime_assert(__native_word(t), \ "Need native word sized stores/loads for atomicity.") +#ifdef __CHECKER__ +#define __must_be_array(a) 0 +#else +/* &a[0] degrades to a pointer: a different type from an array */ +#define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0])) +#endif + #endif /* __LINUX_COMPILER_H */ -- 2.17.1
Powered by blists - more mailing lists