]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
log: use global variable to catch statements in loggers 3309/head
authorChristian Brauner <christian.brauner@ubuntu.com>
Thu, 19 Mar 2020 13:28:02 +0000 (14:28 +0100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Thu, 19 Mar 2020 13:35:56 +0000 (14:35 +0100)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/cgroups/cgroup2_devices.c
src/lxc/log.h
src/lxc/macro.h

index 11e2bdd986e187c27202bbb62fdcf50c461109e3..4efb28fbd7455ef4dcd1051910f119216b2b992c 100644 (file)
@@ -385,7 +385,7 @@ int bpf_program_cgroup_attach(struct bpf_program *prog, int type,
        if (ret < 0)
                return log_error_errno(-1, errno, "Failed to attach bpf program");
 
-       free_replace_move_ptr(prog->attached_path, copy);
+       free_move_ptr(prog->attached_path, copy);
        prog->attached_type = type;
        prog->attached_flags = flags;
 
index c00638cb74f74bcecad3cd4e5151650864a2260f..ec10f53bc509adc991f1fa0d44aa12ca37392a28 100644 (file)
@@ -477,69 +477,79 @@ __lxc_unused static inline void LXC_##LEVEL(struct lxc_log_locinfo* locinfo,      \
        } while (0)
 #endif
 
-#define log_error_errno(__ret__, __errno__, format, ...) \
-       ({                                               \
-               errno = __errno__;                       \
-               SYSERROR(format, ##__VA_ARGS__);         \
-               __ret__;                                 \
+#define log_error_errno(__ret__, __errno__, format, ...)      \
+       ({                                                    \
+               typeof(__ret__) __internal_ret__ = (__ret__); \
+               errno = (__errno__);                          \
+               SYSERROR(format, ##__VA_ARGS__);              \
+               __internal_ret__;                             \
        })
 
-#define log_error(__ret__, format, ...)              \
-       ({                                    \
-               ERROR(format, ##__VA_ARGS__); \
-               __ret__;                      \
+#define log_error(__ret__, format, ...)                       \
+       ({                                                    \
+               typeof(__ret__) __internal_ret__ = (__ret__); \
+               ERROR(format, ##__VA_ARGS__);                 \
+               __internal_ret__;                             \
        })
 
-#define log_trace_errno(__ret__, __errno__, format, ...) \
-       ({                                               \
-               errno = __errno__;                       \
-               SYSTRACE(format, ##__VA_ARGS__);         \
-               __ret__;                                 \
+#define log_trace_errno(__ret__, __errno__, format, ...)      \
+       ({                                                    \
+               typeof(__ret__) __internal_ret__ = (__ret__); \
+               errno = __errno__;                            \
+               SYSTRACE(format, ##__VA_ARGS__);              \
+               __internal_ret__;                             \
        })
 
-#define log_trace(__ret__, format, ...)              \
-       ({                                    \
-               TRACE(format, ##__VA_ARGS__); \
-               __ret__;                      \
+#define log_trace(__ret__, format, ...)                       \
+       ({                                                    \
+               typeof(__ret__) __internal_ret__ = (__ret__); \
+               TRACE(format, ##__VA_ARGS__);                 \
+               __internal_ret__;                             \
        })
 
-#define log_warn_errno(__ret__, __errno__, format, ...) \
-       ({                                              \
-               errno = __errno__;                      \
-               SYSWARN(format, ##__VA_ARGS__);         \
-               __ret__;                                \
+#define log_warn_errno(__ret__, __errno__, format, ...)       \
+       ({                                                    \
+               typeof(__ret__) __internal_ret__ = (__ret__); \
+               errno = __errno__;                            \
+               SYSWARN(format, ##__VA_ARGS__);               \
+               __internal_ret__;                             \
        })
 
-#define log_warn(__ret__, format, ...)       \
-       ({                                   \
-               WARN(format, ##__VA_ARGS__); \
-               __ret__;                     \
+#define log_warn(__ret__, format, ...)                        \
+       ({                                                    \
+               typeof(__ret__) __internal_ret__ = (__ret__); \
+               WARN(format, ##__VA_ARGS__);                  \
+               __internal_ret__;                             \
        })
 
-#define log_debug_errno(__ret__, __errno__, format, ...) \
-       ({                                               \
-               errno = __errno__;                       \
-               SYSDEBUG(format, ##__VA_ARGS__);         \
-               __ret__;                                 \
+#define log_debug_errno(__ret__, __errno__, format, ...)      \
+       ({                                                    \
+               typeof(__ret__) __internal_ret__ = (__ret__); \
+               errno = __errno__;                            \
+               SYSDEBUG(format, ##__VA_ARGS__);              \
+               __internal_ret__;                             \
        })
 
-#define log_debug(__ret__, format, ...)              \
-       ({                                    \
-               DEBUG(format, ##__VA_ARGS__); \
-               __ret__;                      \
+#define log_debug(__ret__, format, ...)                       \
+       ({                                                    \
+               typeof(__ret__) __internal_ret__ = (__ret__); \
+               DEBUG(format, ##__VA_ARGS__);                 \
+               __internal_ret__;                             \
        })
 
-#define log_info_errno(__ret__, __errno__, format, ...) \
-       ({                                              \
-               errno = __errno__;                      \
-               SYSINFO(format, ##__VA_ARGS__);         \
-               __ret__;                                \
+#define log_info_errno(__ret__, __errno__, format, ...)       \
+       ({                                                    \
+               typeof(__ret__) __internal_ret__ = (__ret__); \
+               errno = __errno__;                            \
+               SYSINFO(format, ##__VA_ARGS__);               \
+               __internal_ret__;                             \
        })
 
-#define log_info(__ret__, format, ...)       \
-       ({                                   \
-               INFO(format, ##__VA_ARGS__); \
-               __ret__;                     \
+#define log_info(__ret__, format, ...)                        \
+       ({                                                    \
+               typeof(__ret__) __internal_ret__ = (__ret__); \
+               INFO(format, ##__VA_ARGS__);                  \
+               __internal_ret__;                             \
        })
 
 extern int lxc_log_fd;
index 612fb11ea41e204e667705a58ecd0f3f03c8ba08..3df19d6d3aeab65c0e79bbba11899526d2a5c6a3 100644 (file)
@@ -442,24 +442,23 @@ enum {
                __internal_fd__;            \
        })
 
-#define ret_set_errno(__ret__, __errno__) \
-       ({                                \
-               errno = __errno__;        \
-               __ret__;                  \
+#define ret_set_errno(__ret__, __errno__)                     \
+       ({                                                    \
+               typeof(__ret__) __internal_ret__ = (__ret__); \
+               errno = (__errno__);                          \
+               __internal_ret__;                             \
        })
 
-#define ret_errno(__errno__)       \
-       ({                         \
-               errno = __errno__; \
-               -__errno__;        \
+#define ret_errno(__errno__)         \
+       ({                           \
+               errno = (__errno__); \
+               -(__errno__);        \
        })
 
-#define free_replace_move_ptr(a, b) \
-       ({                          \
-               free(a);            \
-               (a) = (b);          \
-               (b) = NULL;         \
-               0;                  \
+#define free_move_ptr(a, b)          \
+       ({                           \
+               free(a);             \
+               (a) = move_ptr((b)); \
        })
 
 /* Container's specific file/directory names */