From 8dfa30ea03111981ce5cbc793960688d93f17b68 Mon Sep 17 00:00:00 2001 From: Andi Kleen Date: Tue, 19 Nov 2024 11:02:35 -0800 Subject: [PATCH] Avoid race on submitting display commands Doesn't work for quitting, but we can ignore it here. --- common/disp.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/common/disp.c b/common/disp.c index 78bf9e9..c542b77 100644 --- a/common/disp.c +++ b/common/disp.c @@ -193,6 +193,14 @@ disp_consthr_quit(void) static void dispthr_flagset_nolock(disp_flag_t flag) { + if (flag != DISP_FLAG_QUIT) { + /* Wait in case we the disp thread hasn't processed the flag yet. */ + while (*(volatile disp_flag_t *)&s_disp_ctl.flag != DISP_FLAG_NONE) { + (void) pthread_mutex_unlock(&s_disp_ctl.mutex); + usleep(1); + (void) pthread_mutex_lock(&s_disp_ctl.mutex); + } + } s_disp_ctl.flag = flag; (void) pthread_cond_signal(&s_disp_ctl.cond); } -- 2.41.0