From 0604e1dac2d9f71391f5e3dd78578573afbf4530 Mon Sep 17 00:00:00 2001
From: anjiahao <anjiahao@xiaomi.com>
Date: Tue, 15 Aug 2023 15:00:15 +0800
Subject: [PATCH] vfs:add nxsched_foreach to sched_lock avoid crash

If scheduling occurs in file_fsync,
fl_lock may be released, and an error may
occur when calling nxmutex_unlock

Signed-off-by: anjiahao <anjiahao@xiaomi.com>
---
 sched/sched/sched_foreach.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/sched/sched/sched_foreach.c b/sched/sched/sched_foreach.c
index fca65730ceb0d..ed69e979ecef7 100644
--- a/sched/sched/sched_foreach.c
+++ b/sched/sched/sched_foreach.c
@@ -63,6 +63,7 @@ void nxsched_foreach(nxsched_foreach_t handler, FAR void *arg)
   /* Visit each active task */
 
   flags = enter_critical_section();
+  sched_lock();
   for (ndx = 0; ndx < g_npidhash; ndx++)
     {
       /* This test and the function call must be atomic */
@@ -73,5 +74,6 @@ void nxsched_foreach(nxsched_foreach_t handler, FAR void *arg)
         }
     }
 
+  sched_unlock();
   leave_critical_section(flags);
 }