Messages in this thread | | | From | Kees Cook <> | Date | Fri, 16 Nov 2018 13:01:29 -0600 | Subject | Re: [PATCH v2 2/2] build_bug.h: remove all dummy BUILD_BUG_ON stubs for sparse |
| |
On Fri, Nov 16, 2018 at 12:27 AM, Masahiro Yamada <yamada.masahiro@socionext.com> wrote: > The introduction of these dummy BUILD_BUG_ON stubs dates back to > commit 903c0c7cdc21 ("sparse: define dummy BUILD_BUG_ON definition > for sparse"). At that time, BUILD_BUG_ON() was implemented with the > negative array trick, which Sparse complains about even if the > condition can be optimized and evaluated to 0 at compile-time. > > With the previous commit, the leftover negative array trick is gone. > Sparse is happy with the current BUILD_BUG_ON(), which is implemented > by using the 'error' attribute. > > There might be a little room for argument about BUILD_BUG_ON_ZERO(). > Sparse reports 'invalid bitfield width, -1' for non-zero value, > and 'bad integer constant expression' for non-constant value. > This is the same criteria as GCC uses. So, if those Sparse errors > occurred, they would cause errors for GCC as well. (Hence, such > errors would have been detected by the normal compile test process.) > > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Kees Cook <keescook@chromium.org>
-Kees
> --- > > Changes in v2: > - Fix a coding style error (two consecutive blank lines) > > include/linux/build_bug.h | 12 ------------ > 1 file changed, 12 deletions(-) > > diff --git a/include/linux/build_bug.h b/include/linux/build_bug.h > index d415c64..6625c88 100644 > --- a/include/linux/build_bug.h > +++ b/include/linux/build_bug.h > @@ -4,16 +4,6 @@ > > #include <linux/compiler.h> > > -#ifdef __CHECKER__ > -#define __BUILD_BUG_ON_NOT_POWER_OF_2(n) (0) > -#define BUILD_BUG_ON_NOT_POWER_OF_2(n) (0) > -#define BUILD_BUG_ON_ZERO(e) (0) > -#define BUILD_BUG_ON_INVALID(e) (0) > -#define BUILD_BUG_ON_MSG(cond, msg) (0) > -#define BUILD_BUG_ON(condition) (0) > -#define BUILD_BUG() (0) > -#else /* __CHECKER__ */ > - > /* Force a compilation error if a constant expression is not a power of 2 */ > #define __BUILD_BUG_ON_NOT_POWER_OF_2(n) \ > BUILD_BUG_ON(((n) & ((n) - 1)) != 0) > @@ -64,6 +54,4 @@ > */ > #define BUILD_BUG() BUILD_BUG_ON_MSG(1, "BUILD_BUG failed") > > -#endif /* __CHECKER__ */ > - > #endif /* _LINUX_BUILD_BUG_H */ > -- > 2.7.4 >
-- Kees Cook
| |