From aab62aab043162a03e2693dca1be2194bccdeee4 Mon Sep 17 00:00:00 2001 From: Shilei Tian Date: Wed, 5 Jan 2022 23:04:17 -0500 Subject: [PATCH] [OpenMP][Offloading] Fixed a crash caused by dereferencing nullptr In function `DeviceTy::getTargetPointer`, `Entry` could be `nullptr` because of zero length array section. We need to check if it is a valid iterator before using it. Reviewed By: ronlieb Differential Revision: https://reviews.llvm.org/D116716 --- openmp/libomptarget/src/device.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/openmp/libomptarget/src/device.cpp b/openmp/libomptarget/src/device.cpp index 75935b3..738284e 100644 --- a/openmp/libomptarget/src/device.cpp +++ b/openmp/libomptarget/src/device.cpp @@ -305,7 +305,9 @@ DeviceTy::getTargetPointer(void *HstPtrBegin, void *HstPtrBase, int64_t Size, DataMapMtx.unlock(); // If not a host pointer and no present modifier, we need to wait for the // event if it exists. - if (!IsHostPtr && !HasPresentModifier) { + // Note: Entry might be nullptr because of zero length array section. + if (Entry != HostDataToTargetListTy::iterator() && !IsHostPtr && + !HasPresentModifier) { Entry->lock(); void *Event = Entry->getEvent(); if (Event) { -- 2.7.4