}
 
 #define        DMEMIT_SYNC \
-       if (lc->sync != DEFAULTSYNC) \
-               DMEMIT("%ssync ", lc->sync == NOSYNC ? "no" : "")
+       do { \
+               if (lc->sync != DEFAULTSYNC) \
+                       DMEMIT("%ssync ", lc->sync == NOSYNC ? "no" : ""); \
+       } while (0);
 
 static int core_status(struct dm_dirty_log *log, status_type_t status,
                       char *result, unsigned int maxlen)
 
 #define DMDEBUG(fmt, ...) pr_debug(DM_FMT(fmt), ##__VA_ARGS__)
 #define DMDEBUG_LIMIT(fmt, ...) pr_debug_ratelimited(DM_FMT(fmt), ##__VA_ARGS__)
 
-#define DMEMIT(x...) sz += ((sz >= maxlen) ? \
-                         0 : scnprintf(result + sz, maxlen - sz, x))
+#define DMEMIT(x...) (sz += ((sz >= maxlen) ? 0 : scnprintf(result + sz, maxlen - sz, x)))
 
 #define DMEMIT_TARGET_NAME_VERSION(y) \
                DMEMIT("target_name=%s,target_version=%u.%u.%u", \