compiler.h: Move C string helpers into C-only kernel section
The C kernel helpers for evaluating C Strings were positioned where they were visible to assembly inclusion, which was not intended. Move them into the kernel and C-only area of the header so future changes won't confuse the assembler. Fixes:d7a516c6ee
("compiler.h: Fix undefined BUILD_BUG_ON_ZERO()") Fixes:559048d156
("string: Check for "nonstring" attribute on strscpy() arguments") Reviewed-by: Miguel Ojeda <ojeda@kernel.org> Signed-off-by: Kees Cook <kees@kernel.org>
This commit is contained in:
parent
78bba6097b
commit
cb7380de9e
1 changed files with 13 additions and 13 deletions
|
@ -214,6 +214,19 @@ void ftrace_likely_update(struct ftrace_likely_data *f, int val,
|
|||
__v; \
|
||||
})
|
||||
|
||||
#ifdef __CHECKER__
|
||||
#define __BUILD_BUG_ON_ZERO_MSG(e, msg) (0)
|
||||
#else /* __CHECKER__ */
|
||||
#define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);}))
|
||||
#endif /* __CHECKER__ */
|
||||
|
||||
/* &a[0] degrades to a pointer: a different type from an array */
|
||||
#define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(__same_type((a), &(a)[0]), "must be array")
|
||||
|
||||
/* Require C Strings (i.e. NUL-terminated) lack the "nonstring" attribute. */
|
||||
#define __must_be_cstr(p) \
|
||||
__BUILD_BUG_ON_ZERO_MSG(__annotated(p, nonstring), "must be cstr (NUL-terminated)")
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
/**
|
||||
|
@ -254,19 +267,6 @@ static inline void *offset_to_ptr(const int *off)
|
|||
|
||||
#define __ADDRESSABLE_ASM_STR(sym) __stringify(__ADDRESSABLE_ASM(sym))
|
||||
|
||||
#ifdef __CHECKER__
|
||||
#define __BUILD_BUG_ON_ZERO_MSG(e, msg) (0)
|
||||
#else /* __CHECKER__ */
|
||||
#define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);}))
|
||||
#endif /* __CHECKER__ */
|
||||
|
||||
/* &a[0] degrades to a pointer: a different type from an array */
|
||||
#define __must_be_array(a) __BUILD_BUG_ON_ZERO_MSG(__same_type((a), &(a)[0]), "must be array")
|
||||
|
||||
/* Require C Strings (i.e. NUL-terminated) lack the "nonstring" attribute. */
|
||||
#define __must_be_cstr(p) \
|
||||
__BUILD_BUG_ON_ZERO_MSG(__annotated(p, nonstring), "must be cstr (NUL-terminated)")
|
||||
|
||||
/*
|
||||
* This returns a constant expression while determining if an argument is
|
||||
* a constant expression, most importantly without evaluating the argument.
|
||||
|
|
Loading…
Add table
Reference in a new issue