From 1e6ff03f20e3b5f498aab893e3ab9bb4571ea931 Mon Sep 17 00:00:00 2001 From: Paul Soucy Date: Tue, 14 Nov 2023 10:34:37 -0500 Subject: [PATCH] fwk_core: add locking around isr_event_queue This change fixes a race condition when pushing new events from an ISR context. Signed-off-by: Paul Soucy --- framework/src/fwk_core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/framework/src/fwk_core.c b/framework/src/fwk_core.c index 9b338be67..188a1dfa5 100644 --- a/framework/src/fwk_core.c +++ b/framework/src/fwk_core.c @@ -107,8 +107,8 @@ static int put_event( enum fwk_event_type event_type) { struct fwk_event *allocated_event; - struct fwk_event *std_event = NULL; + unsigned int flags; if (event_type == FWK_EVENT_TYPE_STD) { std_event = (struct fwk_event *)event; @@ -157,7 +157,9 @@ static int put_event( "[FWK] event_queue peak: %d", fwk_list_get_max(&ctx.event_queue)); } else { + flags = fwk_interrupt_global_disable(); fwk_list_push_tail(&ctx.isr_event_queue, &allocated_event->slist_node); + fwk_interrupt_global_enable(flags); FWK_TRACE( "[FWK] isr_event_queue peak: %d", -- GitLab