diff --git a/rocclr/runtime/device/pal/palprogram.cpp b/rocclr/runtime/device/pal/palprogram.cpp index 541229594a..695fa871cd 100644 --- a/rocclr/runtime/device/pal/palprogram.cpp +++ b/rocclr/runtime/device/pal/palprogram.cpp @@ -971,8 +971,10 @@ void* PALHSALoaderContext::SegmentAlloc(amdgpu_hsa_elf_segment_t segment, hsa_ag assert(size); assert(align); if (program_->isNull()) { + // Note: In Linux ::posix_memalign() requires at least 16 bytes for the alignment. + align = amd::alignUp(align, 16); void* ptr = amd::Os::alignedMalloc(size, align); - if (zero) { + if ((ptr != nullptr) && zero) { memset(ptr, 0, size); } return ptr;