Skip to content

Commit 53c9dda

Browse files
committed
Improve code for edge cases testing.
- Changes to 'asan_hsa_amd_pointer_info' - Initialize status with default value 'HSA_STATUS_ERROR_NOT_INITIALIZE'. - Assure by adding ternary condition to check if ptr_ is not nullptr when calling GetASanChunkByAddr.
1 parent bdabcd4 commit 53c9dda

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

compiler-rt/lib/asan/asan_allocator.cpp

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include "asan_stack.h"
2424
#include "asan_suppressions.h"
2525
#include "asan_thread.h"
26+
#include "hsa.h"
2627
#include "lsan/lsan_common.h"
2728
#include "sanitizer_common/sanitizer_allocator_checks.h"
2829
#include "sanitizer_common/sanitizer_allocator_interface.h"
@@ -1554,18 +1555,21 @@ hsa_status_t asan_hsa_amd_pointer_info(const void* ptr,
15541555
uint32_t* num_agents_accessible,
15551556
hsa_agent_t** accessible) {
15561557
void* ptr_ = get_allocator().GetBlockBegin(ptr);
1557-
AsanChunk* m = instance.GetAsanChunkByAddr(reinterpret_cast<uptr>(ptr_));
1558-
hsa_status_t status;
1559-
if (ptr_ && m)
1558+
AsanChunk* m = ptr_
1559+
? instance.GetAsanChunkByAddr(reinterpret_cast<uptr>(ptr_))
1560+
: nullptr;
1561+
hsa_status_t status = HSA_STATUS_ERROR_NOT_INITIALIZED;
1562+
if (ptr_ && m) {
15601563
status = REAL(hsa_amd_pointer_info)(ptr, info, alloc, num_agents_accessible,
15611564
accessible);
1562-
if (status == HSA_STATUS_SUCCESS && info && ptr_ && m) {
1563-
static_assert(AP_.kMetadataSize == 0, "Expression below requires this");
1564-
info->agentBaseAddress = reinterpret_cast<void*>(
1565-
reinterpret_cast<uptr>(info->agentBaseAddress) + kPageSize_);
1566-
info->hostBaseAddress = reinterpret_cast<void*>(
1567-
reinterpret_cast<uptr>(info->hostBaseAddress) + kPageSize_);
1568-
info->sizeInBytes = m->UsedSize();
1565+
if (status == HSA_STATUS_SUCCESS && info) {
1566+
static_assert(AP_.kMetadataSize == 0, "Expression below requires this");
1567+
info->agentBaseAddress = reinterpret_cast<void*>(
1568+
reinterpret_cast<uptr>(info->agentBaseAddress) + kPageSize_);
1569+
info->hostBaseAddress = reinterpret_cast<void*>(
1570+
reinterpret_cast<uptr>(info->hostBaseAddress) + kPageSize_);
1571+
info->sizeInBytes = m->UsedSize();
1572+
}
15691573
}
15701574
return status;
15711575
}

0 commit comments

Comments
 (0)