mirror of
https://github.com/torvalds/linux.git
synced 2025-11-11 22:19:23 +02:00
GENMASK() has an input check which uses __builtin_choose_expr() to enable a compile time sanity check of its inputs if they are known at compile time. However, it turns out that __builtin_constant_p() does not always return a compile time constant [0]. It was thought this problem was fixed with gcc 4.9 [1], but apparently this is not the case [2]. Switch to use __is_constexpr() instead which always returns a compile time constant, regardless of its inputs. Link: https://lore.kernel.org/lkml/42b4342b-aefc-a16a-0d43-9f9c0d63ba7a@rasmusvillemoes.dk [0] Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=19449 [1] Link: https://lore.kernel.org/lkml/1ac7bbc2-45d9-26ed-0b33-bf382b8d858b@I-love.SAKURA.ne.jp [2] Link: https://lkml.kernel.org/r/20210511203716.117010-1-rikard.falkeborn@gmail.com Signed-off-by: Rikard Falkeborn <rikard.falkeborn@gmail.com> Reported-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Acked-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Cc: Ard Biesheuvel <ardb@kernel.org> Cc: Yury Norov <yury.norov@gmail.com> Cc: Peter Zijlstra <peterz@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
||
|---|---|---|
| .. | ||
| sched | ||
| unaligned | ||
| atomic.h | ||
| bitmap.h | ||
| bitops.h | ||
| bits.h | ||
| btf_ids.h | ||
| bug.h | ||
| build_bug.h | ||
| compiler-gcc.h | ||
| compiler.h | ||
| compiler_types.h | ||
| const.h | ||
| coresight-pmu.h | ||
| ctype.h | ||
| debug_locks.h | ||
| delay.h | ||
| err.h | ||
| export.h | ||
| filter.h | ||
| ftrace.h | ||
| gfp.h | ||
| hardirq.h | ||
| hash.h | ||
| hashtable.h | ||
| interrupt.h | ||
| irqflags.h | ||
| jhash.h | ||
| kallsyms.h | ||
| kconfig.h | ||
| kern_levels.h | ||
| kernel.h | ||
| linkage.h | ||
| list.h | ||
| lockdep.h | ||
| log2.h | ||
| math64.h | ||
| module.h | ||
| mutex.h | ||
| nmi.h | ||
| numa.h | ||
| objtool.h | ||
| overflow.h | ||
| poison.h | ||
| proc_fs.h | ||
| rbtree.h | ||
| rbtree_augmented.h | ||
| rcu.h | ||
| refcount.h | ||
| ring_buffer.h | ||
| seq_file.h | ||
| sizes.h | ||
| spinlock.h | ||
| stacktrace.h | ||
| static_call_types.h | ||
| string.h | ||
| stringify.h | ||
| time64.h | ||
| types.h | ||
| zalloc.h | ||