From 993a06b6144d54ae2ad83cc25c18acb9d1720ad0 Mon Sep 17 00:00:00 2001 From: Heinrich Schuchardt Date: Sat, 17 Oct 2020 14:31:57 +0200 Subject: [PATCH] log: move processing_msg to global data 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 Reviewed-by: Simon Glass --- common/log.c | 7 +++---- include/asm-generic/global_data.h | 8 ++++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/common/log.c b/common/log.c index b7a6ebe..6a59f2e 100644 --- a/common/log.c +++ b/common/log.c @@ -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; } diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index ebb740d..db83f59 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -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) /** -- 2.7.4