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
---
v2:
new patch
---
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 1b10f6f180..f95f09c1b6 100644
--- a/common/log.c
+++ b/common/log.c
@@ -194,24 +194,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, >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 ebb740d34f..db83f59ceb 100644
--- a/include/asm-generic/global_data.h
+++ b/include/asm-generic/global_data.h
@@ -363,6 +363,14 @@ struct global_data {
* 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.28.0