Re: [PATCH 6/7] Compiler Attributes: remove unneeded sparse (__CHECKER__) tests

From: Miguel Ojeda
Date: Fri Aug 31 2018 - 17:56:15 EST


Hi Nick,

On Fri, Aug 31, 2018 at 11:38 PM, Nick Desaulniers
<ndesaulniers@xxxxxxxxxx> wrote:
> On Fri, Aug 31, 2018 at 10:05 AM Miguel Ojeda
> <miguel.ojeda.sandonis@xxxxxxxxx> wrote:
>>
>> Sparse knows about a few more attributes now, so we can remove
>> the __CHECKER__ conditions from them (which, in turn, allow us
>> to move some of them later on to compiler_attributes.h).
>>
>> * assume_aligned: since sparse's commit ffc860b ("sparse:
>> ignore __assume_aligned__ attribute"), included in 0.5.1
>>
>> * error: since sparse's commit 0a04210 ("sparse: Add 'error'
>> to ignored attributes"), included in 0.5.0
>>
>> * hotpatch: since sparse's commit 6043210 ("sparse/parse.c:
>> ignore hotpatch attribute"), included in 0.5.1
>>
>> * warning: since sparse's commit 977365d ("Avoid "attribute
>> 'warning': unknown attribute" warning"), included in 0.4.2
>>
>> Cc: Eli Friedman <efriedma@xxxxxxxxxxxxxx>
>> Cc: Christopher Li <sparse@xxxxxxxxxxx>
>> Cc: Kees Cook <keescook@xxxxxxxxxxxx>
>> Cc: Ingo Molnar <mingo@xxxxxxxxxx>
>> Cc: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx>
>> Cc: Arnd Bergmann <arnd@xxxxxxxx>
>> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
>> Cc: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx>
>> Cc: Joe Perches <joe@xxxxxxxxxxx>
>> Cc: Dominique Martinet <asmadeus@xxxxxxxxxxxxx>
>> Cc: Nick Desaulniers <ndesaulniers@xxxxxxxxxx>
>> Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
>> Signed-off-by: Miguel Ojeda <miguel.ojeda.sandonis@xxxxxxxxx>
>> ---
>> include/linux/compiler-gcc.h | 6 ++----
>> include/linux/compiler_types.h | 2 +-
>> 2 files changed, 3 insertions(+), 5 deletions(-)
>>
>> diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
>> index fdf2fbe6d544..32e6ce06163f 100644
>> --- a/include/linux/compiler-gcc.h
>> +++ b/include/linux/compiler-gcc.h
>> @@ -84,14 +84,12 @@
>>
>> #define __compiletime_object_size(obj) __builtin_object_size(obj, 0)
>>
>> -#ifndef __CHECKER__
>> #define __compiletime_warning(message) __attribute__((warning(message)))
>> #define __compiletime_error(message) __attribute__((error(message)))
>>
>> -#ifdef LATENT_ENTROPY_PLUGIN
>> +#if defined(LATENT_ENTROPY_PLUGIN) && !defined(__CHECKER__)
>> #define __latent_entropy __attribute__((latent_entropy))
>> #endif
>> -#endif /* __CHECKER__ */
>>
>> /*
>> * calling noreturn functions, __builtin_unreachable() and __builtin_trap()
>> @@ -139,7 +137,7 @@
>>
>> /* gcc version specific checks */
>>
>> -#if GCC_VERSION >= 40900 && !defined(__CHECKER__)
>> +#if GCC_VERSION >= 40900
>> /*
>> * __assume_aligned(n, k): Tell the optimizer that the returned
>> * pointer can be assumed to be k modulo n. The second argument is
>> diff --git a/include/linux/compiler_types.h b/include/linux/compiler_types.h
>> index 3662b19599fc..5dddc7e0c607 100644
>> --- a/include/linux/compiler_types.h
>> +++ b/include/linux/compiler_types.h
>> @@ -216,7 +216,7 @@ struct ftrace_likely_data {
>> #define __must_check
>> #endif
>>
>> -#if defined(CC_USING_HOTPATCH) && !defined(__CHECKER__)
>> +#if defined(CC_USING_HOTPATCH)
>> #define notrace __attribute__((hotpatch(0, 0)))
>> #else
>> #define notrace __attribute__((no_instrument_function))
>> --
>> 2.17.1
>>
>
> Everything looks correct here. It would be good for the sparse
> maintainer to triple check the commit sha's (as those are for sparse's
> code base, not the kernel's) and have their blessing. If Chris is

Actually, nowadays it is very easy to check in sparse's
gcc-attr-list.h file, but since the file was not always there, I tried
to find out when the support for each attribute was added.

But indeed, Chris, please let us know. (Should have CC'd you).

> happy with it, then you can add my signoff:
>
> Reviewed-by: Nick Desaulniers <ndesaulniers@xxxxxxxxxx>
>
> Also, do you need to put the cc list in the commit message? Some
> people do (hopefully in an automated fashion, because I'd imagine
> manually to be difficult) but don't this it's required. Doesn't
> matter, just curious.

Hm... I thought it was supposed to be there for all patches,
considering different patches may have to be targeted to different
people. Also, one has to manage anyway the Acked-by and Reviewed-by
per-patch, so you have to manually go through. On top of that, it is
always handy to have in case you discard a patch into a separate
series or in case you send them through a tool that picks the Cc
individually (instead of something more advanced like git-send-email).
So... I guess? Not sure if it is strictly required, though.

Cheers,
Miguel