From 60c819bb72502c5fd57659a7006778ef0539bcaf Mon Sep 17 00:00:00 2001 From: cameron Date: Thu, 7 Jul 2022 21:11:29 +1000 Subject: [PATCH] Fix Memory leak in drm_memory_manager of OsHandleLinux Add virtual deconstructor to OsHandle and deconstructor to OsHandleLinux Add override keyword to destructor Add overriding deconstructor to OsHandleWin Add newline before private members https://github.com/intel/compute-runtime/pull/550 Signed-off-by: Cameron S Murtagh Signed-off-by: Mateusz Jablonski --- shared/source/memory_manager/host_ptr_defines.h | 4 +++- shared/source/os_interface/linux/drm_allocation.h | 1 + shared/source/os_interface/windows/wddm_allocation.h | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/shared/source/memory_manager/host_ptr_defines.h b/shared/source/memory_manager/host_ptr_defines.h index e274464813..9751c52955 100644 --- a/shared/source/memory_manager/host_ptr_defines.h +++ b/shared/source/memory_manager/host_ptr_defines.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2021 Intel Corporation + * Copyright (C) 2018-2022 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -14,6 +14,8 @@ namespace NEO { struct OsHandle { + virtual ~OsHandle() = default; + protected: OsHandle() = default; }; diff --git a/shared/source/os_interface/linux/drm_allocation.h b/shared/source/os_interface/linux/drm_allocation.h index f29e062b98..3341191183 100644 --- a/shared/source/os_interface/linux/drm_allocation.h +++ b/shared/source/os_interface/linux/drm_allocation.h @@ -18,6 +18,7 @@ enum class CachePolicy : uint32_t; enum class CacheRegion : uint16_t; struct OsHandleLinux : OsHandle { + ~OsHandleLinux() override = default; BufferObject *bo = nullptr; }; diff --git a/shared/source/os_interface/windows/wddm_allocation.h b/shared/source/os_interface/windows/wddm_allocation.h index 51a7fc6e8d..b0522055ba 100644 --- a/shared/source/os_interface/windows/wddm_allocation.h +++ b/shared/source/os_interface/windows/wddm_allocation.h @@ -15,6 +15,7 @@ namespace NEO { struct OsHandleWin : OsHandle { + ~OsHandleWin() override = default; D3DKMT_HANDLE handle = 0; D3DGPU_VIRTUAL_ADDRESS gpuPtr = 0; Gmm *gmm = nullptr;