diff --git a/drivers/syslog/syslog_intbuffer.c b/drivers/syslog/syslog_intbuffer.c index d874819d4e2..beaef2b1074 100644 --- a/drivers/syslog/syslog_intbuffer.c +++ b/drivers/syslog/syslog_intbuffer.c @@ -104,8 +104,6 @@ static void syslog_flush_internal(bool force, size_t buflen) * concurrent modification by other tasks. */ - flags = spin_lock_irqsave_wo_note(&g_syslog_intbuffer.splock); - do { buffer = circbuf_get_readptr(&g_syslog_intbuffer.circ, &size); @@ -118,8 +116,6 @@ static void syslog_flush_internal(bool force, size_t buflen) } } while (size > 0 && buflen > 0); - - spin_unlock_irqrestore_wo_note(&g_syslog_intbuffer.splock, flags); } /**************************************************************************** @@ -201,7 +197,11 @@ void syslog_add_intbuffer(FAR const char *buffer, size_t buflen) void syslog_flush_intbuffer(bool force) { + irqstate_t flags; + + flags = spin_lock_irqsave_wo_note(&g_syslog_intbuffer.splock); syslog_flush_internal(force, sizeof(g_syslog_intbuffer.buffer)); + spin_unlock_irqrestore_wo_note(&g_syslog_intbuffer.splock, flags); } #endif /* CONFIG_SYSLOG_INTBUFFER */