• Xiaozhou Liu's avatar
    include/linux/compiler_types.h: don't pollute userspace with macro definitions · 71391bdd
    Xiaozhou Liu authored
    Macros 'inline' and '__gnu_inline' used to be defined in compiler-gcc.h,
    which was (and is) included entirely in (__KERNEL__ && !__ASSEMBLY__).
    Commit 815f0ddb ("include/linux/compiler*.h: make compiler-*.h mutually
    exclusive") had those macros exposed to userspace, unintentionally.
    
    Then commit a3f8a30f ("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: default avatarNick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: default avatarXiaozhou Liu <liuxiaozhou@bytedance.com>
    Signed-off-by: Miguel Ojeda's avatarMiguel Ojeda <miguel.ojeda.sandonis@gmail.com>
    71391bdd
compiler_types.h 6.57 KB