Commit 903c0c7cdc21f2ccb7562a7bbc70289c0c2b16ad ('sparse: define dummy
BUILD_BUG_ON definition for sparse') left these two broken. The ZERO
or NULL suffix specifies what the macro should expand to, not the
value that would indicate a bug.
Signed-off-by: Ben Hutchings <[email protected]>
---
sparse currently reports a syntax error and no useful warnings for any
source file which uses one of these macros. Since module_param() uses
BUILD_BUG_ON_ZERO(), that's a lot of source files.
Ben.
include/linux/kernel.h | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index fb0e732..fccd366 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -671,8 +671,8 @@ struct sysinfo {
#ifdef __CHECKER__
#define BUILD_BUG_ON_NOT_POWER_OF_2(n)
-#define BUILD_BUG_ON_ZERO(e)
-#define BUILD_BUG_ON_NULL(e)
+#define BUILD_BUG_ON_ZERO(e) ((size_t)0)
+#define BUILD_BUG_ON_NULL(e) ((void *)0)
#define BUILD_BUG_ON(condition)
#else /* __CHECKER__ */
--
1.7.4.4
--
Ben Hutchings, Senior Software Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
On Fri, 24 Jun 2011 22:45:12 +0100 Ben Hutchings wrote:
> Commit 903c0c7cdc21f2ccb7562a7bbc70289c0c2b16ad ('sparse: define dummy
> BUILD_BUG_ON definition for sparse') left these two broken. The ZERO
> or NULL suffix specifies what the macro should expand to, not the
> value that would indicate a bug.
>
> Signed-off-by: Ben Hutchings <[email protected]>
> ---
> sparse currently reports a syntax error and no useful warnings for any
> source file which uses one of these macros. Since module_param() uses
> BUILD_BUG_ON_ZERO(), that's a lot of source files.
>
> Ben.
This patch from 2011-MAY-30 also fixes these warnings, but the typecasting
in yours is probably better. :)
http://marc.info/?l=linux-kernel&m=130677145629121&w=2
Wait, 3.0-rc4 already has the above patch. Is yours still needed?
> include/linux/kernel.h | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/include/linux/kernel.h b/include/linux/kernel.h
> index fb0e732..fccd366 100644
> --- a/include/linux/kernel.h
> +++ b/include/linux/kernel.h
> @@ -671,8 +671,8 @@ struct sysinfo {
>
> #ifdef __CHECKER__
> #define BUILD_BUG_ON_NOT_POWER_OF_2(n)
> -#define BUILD_BUG_ON_ZERO(e)
> -#define BUILD_BUG_ON_NULL(e)
> +#define BUILD_BUG_ON_ZERO(e) ((size_t)0)
> +#define BUILD_BUG_ON_NULL(e) ((void *)0)
> #define BUILD_BUG_ON(condition)
> #else /* __CHECKER__ */
>
> --
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
On Fri, 2011-06-24 at 15:28 -0700, Randy Dunlap wrote:
> On Fri, 24 Jun 2011 22:45:12 +0100 Ben Hutchings wrote:
>
> > Commit 903c0c7cdc21f2ccb7562a7bbc70289c0c2b16ad ('sparse: define dummy
> > BUILD_BUG_ON definition for sparse') left these two broken. The ZERO
> > or NULL suffix specifies what the macro should expand to, not the
> > value that would indicate a bug.
> >
> > Signed-off-by: Ben Hutchings <[email protected]>
> > ---
> > sparse currently reports a syntax error and no useful warnings for any
> > source file which uses one of these macros. Since module_param() uses
> > BUILD_BUG_ON_ZERO(), that's a lot of source files.
> >
> > Ben.
>
> This patch from 2011-MAY-30 also fixes these warnings, but the typecasting
> in yours is probably better. :)
>
> http://marc.info/?l=linux-kernel&m=130677145629121&w=2
>
> Wait, 3.0-rc4 already has the above patch. Is yours still needed?
[...]
Sorry, my baseline was a little out of date.
I'm not sure whether the type of BUILD_BUG_ON_ZERO() should be size_t;
that's just what the non-sparse definition works out as. In some cases
it could make a difference whether it's signed or not.
Ben.
--
Ben Hutchings, Senior Software Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.