[OpenMP] Fixed possible array out of bound access
authorJonathan Peyton <jonathan.l.peyton@intel.com>
Wed, 28 Nov 2018 20:15:11 +0000 (20:15 +0000)
committerJonathan Peyton <jonathan.l.peyton@intel.com>
Wed, 28 Nov 2018 20:15:11 +0000 (20:15 +0000)
There is low probability that array th_hot_teams can be
accessed out of bound (when many nested levels are requested
to keep hot teams via KMP_HOT_TEAMS_MAX_LEVEL). The patch
adds the check of index that fixes the problem.

Patch by Andrey Churbanov

Differential Revision: https://reviews.llvm.org/D54950

llvm-svn: 347800

openmp/runtime/src/kmp_runtime.cpp

index f2e9956..44774e9 100644 (file)
@@ -2132,6 +2132,7 @@ int __kmp_fork_call(ident_t *loc, int gtid,
         master_th->th.th_task_state_top++;
 #if KMP_NESTED_HOT_TEAMS
         if (master_th->th.th_hot_teams &&
+            active_level < __kmp_hot_teams_max_level &&
             team == master_th->th.th_hot_teams[active_level].hot_team) {
           // Restore master's nested state if nested hot team
           master_th->th.th_task_state =