You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ma...@apache.org on 2021/10/17 08:29:02 UTC

[incubator-nuttx] branch master updated: sched: Check g_pidhash[hash_ndx] isn't NULL before access pid field in nxsched_get_tcb

This is an automated email from the ASF dual-hosted git repository.

masayuki pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new 4a7915e  sched: Check g_pidhash[hash_ndx] isn't NULL before access pid field in nxsched_get_tcb
4a7915e is described below

commit 4a7915e72ba037ddadb1347c9f2fda1388be37d8
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Sun Oct 17 14:20:07 2021 +0800

    sched: Check g_pidhash[hash_ndx] isn't NULL before access pid field in nxsched_get_tcb
    
    Fix the regression by commit:
    commit 8b67944c75b81d17174bd207ad63acfa22da8983
    Author: Xiang Xiao <xi...@xiaomi.com>
    Date:   Thu Oct 14 11:03:07 2021 +0800
    
        sched: Remove pidhash_s and move ticks to tcb_s
    
        simplify the code logic and reduce memory a little bit
    
        Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
    
    Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
 sched/sched/sched_gettcb.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/sched/sched/sched_gettcb.c b/sched/sched/sched_gettcb.c
index 9ee502c..3e38f51 100644
--- a/sched/sched/sched_gettcb.c
+++ b/sched/sched/sched_gettcb.c
@@ -56,6 +56,8 @@ FAR struct tcb_s *nxsched_get_tcb(pid_t pid)
   irqstate_t flags;
   int hash_ndx;
 
+  flags = enter_critical_section();
+
   /* Verify whether g_pidhash hash table has already been allocated and
    * whether the PID is within range.
    */
@@ -68,24 +70,22 @@ FAR struct tcb_s *nxsched_get_tcb(pid_t pid)
        * terminating asynchronously.
        */
 
-      flags = enter_critical_section();
-
       /* Get the hash_ndx associated with the pid */
 
       hash_ndx = PIDHASH(pid);
 
       /* Verify that the correct TCB was found. */
 
-      if (g_pidhash && pid == g_pidhash[hash_ndx]->pid)
+      if (g_pidhash[hash_ndx] != NULL && pid == g_pidhash[hash_ndx]->pid)
         {
           /* Return the TCB associated with this pid (if any) */
 
           ret = g_pidhash[hash_ndx];
         }
-
-      leave_critical_section(flags);
     }
 
+  leave_critical_section(flags);
+
   /* Return the TCB. */
 
   return ret;