aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAttila Fülöp <[email protected]>2023-03-15 19:13:25 +0100
committerGitHub <[email protected]>2023-03-15 11:13:25 -0700
commit5f3611121dd844f81a27d15ed2db770dea189d11 (patch)
treebdf0a8180607c23f21d5fbd3716f03188862bb56
parentc31bb934cd30050a23f7ad7a648ad29e6cd0ae5d (diff)
spl: cmn_err_once() should be usable in brace-less if else statements
Commit 11913870 (#14567) added cmn_err_once() by #define'ing a compound statement but failed to consider usage in a single statement brace-less if else. Fix the problem by using the common "do {} while (0)" construct. Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Attila Fülöp <[email protected]> Closes #14629
-rw-r--r--include/os/freebsd/spl/sys/cmn_err.h16
-rw-r--r--include/os/linux/spl/sys/cmn_err.h8
-rw-r--r--lib/libspl/include/sys/cmn_err.h16
3 files changed, 20 insertions, 20 deletions
diff --git a/include/os/freebsd/spl/sys/cmn_err.h b/include/os/freebsd/spl/sys/cmn_err.h
index dd3da7da2..87fce4955 100644
--- a/include/os/freebsd/spl/sys/cmn_err.h
+++ b/include/os/freebsd/spl/sys/cmn_err.h
@@ -75,36 +75,36 @@ extern void panic(const char *, ...)
__attribute__((format(printf, 1, 2), __noreturn__));
#define cmn_err_once(ce, ...) \
-{ \
+do { \
static volatile uint32_t printed = 0; \
if (atomic_cas_32(&printed, 0, 1) == 0) { \
cmn_err(ce, __VA_ARGS__); \
} \
-}
+} while (0)
#define vcmn_err_once(ce, fmt, ap) \
-{ \
+do { \
static volatile uint32_t printed = 0; \
if (atomic_cas_32(&printed, 0, 1) == 0) { \
vcmn_err(ce, fmt, ap); \
} \
-}
+} while (0)
#define zcmn_err_once(zone, ce, ...) \
-{ \
+do { \
static volatile uint32_t printed = 0; \
if (atomic_cas_32(&printed, 0, 1) == 0) { \
zcmn_err(zone, ce, __VA_ARGS__); \
} \
-}
+} while (0)
#define vzcmn_err_once(zone, ce, fmt, ap) \
-{ \
+do { \
static volatile uint32_t printed = 0; \
if (atomic_cas_32(&printed, 0, 1) == 0) { \
vzcmn_err(zone, ce, fmt, ap); \
} \
-}
+} while (0)
#endif /* !_ASM */
diff --git a/include/os/linux/spl/sys/cmn_err.h b/include/os/linux/spl/sys/cmn_err.h
index 7ca2a86be..bd407559c 100644
--- a/include/os/linux/spl/sys/cmn_err.h
+++ b/include/os/linux/spl/sys/cmn_err.h
@@ -47,19 +47,19 @@ extern void vpanic(const char *, va_list)
#define fm_panic panic
#define cmn_err_once(ce, ...) \
-{ \
+do { \
static volatile uint32_t printed = 0; \
if (atomic_cas_32(&printed, 0, 1) == 0) { \
cmn_err(ce, __VA_ARGS__); \
} \
-}
+} while (0)
#define vcmn_err_once(ce, fmt, ap) \
-{ \
+do { \
static volatile uint32_t printed = 0; \
if (atomic_cas_32(&printed, 0, 1) == 0) { \
vcmn_err(ce, fmt, ap); \
} \
-}
+} while (0)
#endif /* SPL_CMN_ERR_H */
diff --git a/lib/libspl/include/sys/cmn_err.h b/lib/libspl/include/sys/cmn_err.h
index 6c71dcb8e..6a29e6cff 100644
--- a/lib/libspl/include/sys/cmn_err.h
+++ b/lib/libspl/include/sys/cmn_err.h
@@ -30,35 +30,35 @@
#include <atomic.h>
#define cmn_err_once(ce, ...) \
-{ \
+do { \
static volatile uint32_t printed = 0; \
if (atomic_cas_32(&printed, 0, 1) == 0) { \
cmn_err(ce, __VA_ARGS__); \
} \
-}
+} while (0)
#define vcmn_err_once(ce, fmt, ap) \
-{ \
+do { \
static volatile uint32_t printed = 0; \
if (atomic_cas_32(&printed, 0, 1) == 0) { \
vcmn_err(ce, fmt, ap); \
} \
-}
+} while (0)
#define zcmn_err_once(zone, ce, ...) \
-{ \
+do { \
static volatile uint32_t printed = 0; \
if (atomic_cas_32(&printed, 0, 1) == 0) { \
zcmn_err(zone, ce, __VA_ARGS__); \
} \
-}
+} while (0)
#define vzcmn_err_once(zone, ce, fmt, ap) \
-{ \
+do { \
static volatile uint32_t printed = 0; \
if (atomic_cas_32(&printed, 0, 1) == 0) { \
vzcmn_err(zone, ce, fmt, ap); \
} \
-}
+} while (0)
#endif