From 559bb50c6a7df06591d27275b9bcd7b211f8cfa4 Mon Sep 17 00:00:00 2001 From: Felix Kuehling Date: Wed, 7 Jul 2021 21:19:25 -0400 Subject: [PATCH] libhsakmt: Fix deadlock in map_mmio Unlock mutex if MMIO mapping fails. This happens on all GFXv8 GPUs. Signed-off-by: Felix Kuehling Change-Id: I1dee1cbddefd9185c24ea79377f49f8ae2c5ff57 [ROCm/ROCR-Runtime commit: 19536080a87aeb4c903ce766971461302d2ac677] --- projects/rocr-runtime/src/fmm.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/projects/rocr-runtime/src/fmm.c b/projects/rocr-runtime/src/fmm.c index 132df4f7f8..f00584b1e5 100644 --- a/projects/rocr-runtime/src/fmm.c +++ b/projects/rocr-runtime/src/fmm.c @@ -2077,8 +2077,10 @@ static void *map_mmio(uint32_t node_id, uint32_t gpu_id, int mmap_fd) mem = __fmm_allocate_device(gpu_id, NULL, PAGE_SIZE, aperture, &mmap_offset, ioc_flags, &vm_obj); - if (!mem || !vm_obj) + if (!mem || !vm_obj) { + pthread_mutex_unlock(&aperture->fmm_mutex); return NULL; + } flags.Value = 0; flags.ui32.NonPaged = 1;