From d05ecea2539d4923ce726a5fc87f5b910ef54bad Mon Sep 17 00:00:00 2001 From: Ioannis Assiouras Date: Wed, 5 Feb 2025 22:21:24 +0000 Subject: [PATCH] SWDEV-508435 - Added a fix for double free of hsaImageObject Change-Id: I9397f7c9dbbad7c249b359155df312cb920eba6c --- rocclr/device/rocm/rocmemory.cpp | 3 ++- rocclr/device/rocm/rocmemory.hpp | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/rocclr/device/rocm/rocmemory.cpp b/rocclr/device/rocm/rocmemory.cpp index d2229e025c..bee2110c43 100644 --- a/rocclr/device/rocm/rocmemory.cpp +++ b/rocclr/device/rocm/rocmemory.cpp @@ -1252,6 +1252,7 @@ bool Image::create(bool alloc_local) { permission_ = orgImage->permission_; deviceMemory_ = orgImage->deviceMemory_; hsaImageObject_ = orgImage->hsaImageObject_; + ownsHsaImageObject_ = false; return true; } @@ -1490,7 +1491,7 @@ void Image::destroy() { delete copyImageBuffer_; - if (hsaImageObject_.handle != 0) { + if (hsaImageObject_.handle != 0 && ownsHsaImageObject_) { hsa_status_t status = hsa_ext_image_destroy(dev().getBackendDevice(), hsaImageObject_); assert(status == HSA_STATUS_SUCCESS); } diff --git a/rocclr/device/rocm/rocmemory.hpp b/rocclr/device/rocm/rocmemory.hpp index c6f41a5750..03d434d8f9 100644 --- a/rocclr/device/rocm/rocmemory.hpp +++ b/rocclr/device/rocm/rocmemory.hpp @@ -250,6 +250,7 @@ class Image : public roc::Memory { hsa_access_permission_t permission_; hsa_ext_image_data_info_t deviceImageInfo_; hsa_ext_image_t hsaImageObject_; + bool ownsHsaImageObject_ = true; void* originalDeviceMemory_; amd::Image* copyImageBuffer_ = nullptr;