From 76fdaebea70a9ce17f27b29cf6891955776fed8a Mon Sep 17 00:00:00 2001 From: Philip Yang Date: Wed, 22 May 2024 10:57:37 -0400 Subject: [PATCH] libhsakmt: Add missing CHECK_KFD_OPEN in APIs The application may use parent process KFD handle or invalid KFD handle, add CHECK_KFD_OPEN in all APIs to catch this application bug earlier without calling to KFD. Change-Id: I0391e91eeca8e6752fc9c23f0742445b823ea9b0 Signed-off-by: Philip Yang Signed-off-by: Chris Freehill [ROCm/ROCR-Runtime commit: c98a8dc1799436f36d20e71d03f6653233b33595] --- projects/rocr-runtime/libhsakmt/src/memory.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/projects/rocr-runtime/libhsakmt/src/memory.c b/projects/rocr-runtime/libhsakmt/src/memory.c index 9178b56dc2..2ee2e9e3dc 100644 --- a/projects/rocr-runtime/libhsakmt/src/memory.c +++ b/projects/rocr-runtime/libhsakmt/src/memory.c @@ -501,6 +501,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtMapMemoryToGPUNodes(void *MemoryAddress, uint32_t *gpu_id_array; HSAKMT_STATUS ret; + CHECK_KFD_OPEN(); + pr_debug("[%s] address %p number of nodes %lu\n", __func__, MemoryAddress, NumberOfNodes); @@ -565,6 +567,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtUnmapGraphicHandle(HSAuint32 NodeId, HSAuint64 FlatMemoryAddress, HSAuint64 SizeInBytes) { + CHECK_KFD_OPEN(); + return hsaKmtUnmapMemoryToGPU(PORT_UINT64_TO_VPTR(FlatMemoryAddress)); } @@ -574,6 +578,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtGetTileConfig(HSAuint32 NodeId, HsaGpuTileConfig * uint32_t gpu_id; HSAKMT_STATUS result; + CHECK_KFD_OPEN(); + pr_debug("[%s] node %d\n", __func__, NodeId); result = validate_nodeid(NodeId, &gpu_id); @@ -609,6 +615,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtGetTileConfig(HSAuint32 NodeId, HsaGpuTileConfig * HSAKMT_STATUS HSAKMTAPI hsaKmtQueryPointerInfo(const void *Pointer, HsaPointerInfo *PointerInfo) { + CHECK_KFD_OPEN(); + pr_debug("[%s] pointer %p\n", __func__, Pointer); if (!PointerInfo) @@ -619,6 +627,8 @@ HSAKMT_STATUS HSAKMTAPI hsaKmtQueryPointerInfo(const void *Pointer, HSAKMT_STATUS HSAKMTAPI hsaKmtSetMemoryUserData(const void *Pointer, void *UserData) { + CHECK_KFD_OPEN(); + pr_debug("[%s] pointer %p\n", __func__, Pointer); return fmm_set_mem_user_data(Pointer, UserData);