log: move processing_msg to global data
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Sat, 17 Oct 2020 12:31:57 +0000 (14:31 +0200)
committerTom Rini <trini@konsulko.com>
Tue, 27 Oct 2020 17:50:53 +0000 (13:50 -0400)
Replace the static variable processing_msg by a field in the global data.
Make the field bool at it can only be true or false.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
common/log.c
include/asm-generic/global_data.h

index b7a6ebe..6a59f2e 100644 (file)
@@ -199,24 +199,23 @@ static bool log_passes_filters(struct log_device *ldev, struct log_rec *rec)
 static int log_dispatch(struct log_rec *rec)
 {
        struct log_device *ldev;
-       static int processing_msg;
 
        /*
         * When a log driver writes messages (e.g. via the network stack) this
         * may result in further generated messages. We cannot process them here
         * as this might result in infinite recursion.
         */
-       if (processing_msg)
+       if (gd->processing_msg)
                return 0;
 
        /* Emit message */
-       processing_msg = 1;
+       gd->processing_msg = true;
        list_for_each_entry(ldev, &gd->log_head, sibling_node) {
                if ((ldev->flags & LOGDF_ENABLE) &&
                    log_passes_filters(ldev, rec))
                        ldev->drv->emit(ldev, rec);
        }
-       processing_msg = 0;
+       gd->processing_msg = false;
        return 0;
 }
 
index ebb740d..db83f59 100644 (file)
@@ -363,6 +363,14 @@ struct global_data {
         * &enum log_fmt defines the bits of the bit mask.
         */
        int log_fmt;
+
+       /**
+        * @processing_msg: a log message is being processed
+        *
+        * This flag is used to suppress the creation of additional messages
+        * while another message is being processed.
+        */
+       bool processing_msg;
 #endif
 #if CONFIG_IS_ENABLED(BLOBLIST)
        /**