]> asedeno.scripts.mit.edu Git - linux.git/commit
include/linux/compiler_types.h: don't pollute userspace with macro definitions
authorXiaozhou Liu <liuxiaozhou@bytedance.com>
Fri, 14 Dec 2018 14:14:31 +0000 (22:14 +0800)
committerMiguel Ojeda <miguel.ojeda.sandonis@gmail.com>
Fri, 14 Dec 2018 15:57:16 +0000 (16:57 +0100)
commit71391bdd2e9aab188f86bf1ecd9b232531ec7eea
treedfdbb33056f1f9beee580d4bcd0d5a5e7bef0aef
parent40e020c129cfc991e8ab4736d2665351ffd1468d
include/linux/compiler_types.h: don't pollute userspace with macro definitions

Macros 'inline' and '__gnu_inline' used to be defined in compiler-gcc.h,
which was (and is) included entirely in (__KERNEL__ && !__ASSEMBLY__).
Commit 815f0ddb346c ("include/linux/compiler*.h: make compiler-*.h mutually
exclusive") had those macros exposed to userspace, unintentionally.

Then commit a3f8a30f3f00 ("Compiler Attributes: use feature checks
instead of version checks") moved '__gnu_inline' back into
(__KERNEL__ && !__ASSEMBLY__) and 'inline' was left behind. Since 'inline'
depends on '__gnu_inline', compiling error showing "unknown type name
‘__gnu_inline’" will pop up, if userspace somehow includes
<linux/compiler.h>.

Other macros like __must_check, notrace, etc. are in a similar situation.
So just move all these macros back into (__KERNEL__ && !__ASSEMBLY__).

Note:
  1. This patch only affects what userspace sees.
  2. __must_check (when !CONFIG_ENABLE_MUST_CHECK) and noinline_for_stack
     were once defined in __KERNEL__ only, but we believe that they can
     be put into !__ASSEMBLY__ too.

Acked-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Xiaozhou Liu <liuxiaozhou@bytedance.com>
Signed-off-by: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
include/linux/compiler_types.h