From d8009a1ca6607bfe08978476ae2c77679b2b5453 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 31 Aug 2022 10:52:25 +0200 Subject: [PATCH] BUILD: debug: make sure debug macros are never empty As outlined in commit f7ebe584d7 ("BUILD: debug: Add braces to if statement calling only CHECK_IF()"), the BUG_ON() family of macros is incorrectly defined to be empty when debugging is disabled, and that can lead to trouble. Make sure they always fall back to the usual "do { } while (0)". This may be backported to 2.6 if needed, though no such issue was met there to date. --- include/haproxy/bug.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/haproxy/bug.h b/include/haproxy/bug.h index d65c1567c..60b246793 100644 --- a/include/haproxy/bug.h +++ b/include/haproxy/bug.h @@ -140,9 +140,9 @@ static inline __attribute((always_inline)) void ha_crash_now(void) # define CHECK_IF(cond) _BUG_ON_ONCE(cond, __FILE__, __LINE__, 1, "FATAL: check ", "") # endif #else -# define BUG_ON(cond) -# define WARN_ON(cond) -# define CHECK_IF(cond) +# define BUG_ON(cond) do { } while (0) +# define WARN_ON(cond) do { } while (0) +# define CHECK_IF(cond) do { } while (0) #endif /* These macros are only for hot paths and remain disabled unless DEBUG_STRICT is 2 or above. @@ -164,8 +164,8 @@ static inline __attribute((always_inline)) void ha_crash_now(void) # define CHECK_IF_HOT(cond) _BUG_ON_ONCE(cond, __FILE__, __LINE__, 1, "FATAL: check ", "") # endif #else -# define BUG_ON_HOT(cond) -# define CHECK_IF_HOT(cond) +# define BUG_ON_HOT(cond) do { } while (0) +# define CHECK_IF_HOT(cond) do { } while (0) #endif