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); }