[Openmp-commits] [PATCH] D36017: Move lock acquire/release functions to safer locations in task deque cleanup code
Hansang Bae via Phabricator via Openmp-commits
openmp-commits at lists.llvm.org
Fri Jul 28 13:57:07 PDT 2017
hbae created this revision.
The original locations can be reached without initializing the lock variable (td_deque_lock), so it is potentially unsafe.
It is guaranteed that the lock is initialized if the deque (td_deque) is not NULL, and lock functions can be safely called.
Repository:
rL LLVM
https://reviews.llvm.org/D36017
Files:
runtime/src/kmp_tasking.cpp
Index: runtime/src/kmp_tasking.cpp
===================================================================
--- runtime/src/kmp_tasking.cpp
+++ runtime/src/kmp_tasking.cpp
@@ -2504,14 +2504,13 @@
// Deallocates a task deque for a particular thread. Happens at library
// deallocation so don't need to reset all thread data fields.
static void __kmp_free_task_deque(kmp_thread_data_t *thread_data) {
- __kmp_acquire_bootstrap_lock(&thread_data->td.td_deque_lock);
-
if (thread_data->td.td_deque != NULL) {
+ __kmp_acquire_bootstrap_lock(&thread_data->td.td_deque_lock);
TCW_4(thread_data->td.td_deque_ntasks, 0);
__kmp_free(thread_data->td.td_deque);
thread_data->td.td_deque = NULL;
+ __kmp_release_bootstrap_lock(&thread_data->td.td_deque_lock);
}
- __kmp_release_bootstrap_lock(&thread_data->td.td_deque_lock);
#ifdef BUILD_TIED_TASK_STACK
// GEH: Figure out what to do here for td_susp_tied_tasks
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D36017.108704.patch
Type: text/x-patch
Size: 933 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20170728/f04744a2/attachment.bin>
More information about the Openmp-commits
mailing list