Browse Source

[smart] fixup: lwp_free() (#8126)

Signed-off-by: shell <wangxiaoyao@rt-thread.com>
Shell 1 year ago
parent
commit
8e57b5fdd4
1 changed files with 2 additions and 1 deletions
  1. 2 1
      components/lwp/lwp_pid.c

+ 2 - 1
components/lwp/lwp_pid.c

@@ -425,6 +425,7 @@ void lwp_free(struct rt_lwp* lwp)
 #ifdef ARCH_MM_MMU
     lwp_unmap_user_space(lwp);
 #endif
+    timer_list_free(&lwp->timer);
 
     level = rt_hw_interrupt_disable();
     /* for children */
@@ -506,7 +507,6 @@ void lwp_free(struct rt_lwp* lwp)
         }
     }
 
-    timer_list_free(&lwp->timer);
     lwp_pid_put(lwp_to_pid(lwp));
     rt_hw_interrupt_enable(level);
     rt_free(lwp);
@@ -706,6 +706,7 @@ pid_t waitpid(pid_t pid, int *status, int options)
         }
         (*lwp_node) = lwp->sibling;
         lwp->parent = RT_NULL;
+        lwp_pid_put(pid);
     }
 
 quit: