Gary-Hobson commented on code in PR #13129:
URL: https://github.com/apache/nuttx/pull/13129#discussion_r1738166090


##########
sched/task/task_setup.c:
##########
@@ -140,13 +140,32 @@ static int nxtask_assign_pid(FAR struct tcb_s *tcb)
    * expand space.
    */
 
+  temp = g_pidhash;
+
+  /* Calling malloc in a critical section may cause thread switching.
+   * Here we check whether other threads have applied successfully,
+   * and if successful, return directly
+   */
+
+  leave_critical_section(flags);
   pidhash = kmm_zalloc(g_npidhash * 2 * sizeof(*pidhash));
+  flags = enter_critical_section();
   if (pidhash == NULL)
     {
       leave_critical_section(flags);
       return -ENOMEM;
     }
 
+  /* Handle conner case: context siwtch happened when kmm_malloc */
+
+  if (temp != g_pidhash)
+    {
+      leave_critical_section(flags);
+      kmm_free(pidhash);
+      flags = enter_critical_section();

Review Comment:
   Done



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to