diff --git a/shared/source/os_interface/linux/drm_buffer_object.cpp b/shared/source/os_interface/linux/drm_buffer_object.cpp index 91886f94cc..707feb1000 100644 --- a/shared/source/os_interface/linux/drm_buffer_object.cpp +++ b/shared/source/os_interface/linux/drm_buffer_object.cpp @@ -326,6 +326,7 @@ int BufferObject::pin(BufferObject *const boToPin[], size_t numberOfBos, OsConte auto retVal = 0; if (this->drm->isVmBindAvailable()) { + auto lock = static_cast(this->drm->getRootDeviceEnvironment().memoryOperationsInterface.get())->lockHandlerIfUsed(); retVal = bindBOsWithinContext(boToPin, numberOfBos, osContext, vmHandleId, false); } else { StackVec execObject(numberOfBos + 1); @@ -339,6 +340,7 @@ int BufferObject::validateHostPtr(BufferObject *const boToPin[], size_t numberOf auto retVal = 0; if (this->drm->isVmBindAvailable()) { + auto lock = static_cast(this->drm->getRootDeviceEnvironment().memoryOperationsInterface.get())->lockHandlerIfUsed(); for (size_t i = 0; i < numberOfBos; i++) { retVal = boToPin[i]->bind(osContext, vmHandleId, false); if (retVal) { diff --git a/shared/source/os_interface/linux/drm_memory_operations_handler_bind.cpp b/shared/source/os_interface/linux/drm_memory_operations_handler_bind.cpp index 74cbe41709..5174cd0595 100644 --- a/shared/source/os_interface/linux/drm_memory_operations_handler_bind.cpp +++ b/shared/source/os_interface/linux/drm_memory_operations_handler_bind.cpp @@ -157,7 +157,7 @@ MemoryOperationsStatus DrmMemoryOperationsHandlerBind::mergeWithResidencyContain } std::unique_lock DrmMemoryOperationsHandlerBind::lockHandlerIfUsed() { - return std::unique_lock(); + return std::unique_lock(mutex); } MemoryOperationsStatus DrmMemoryOperationsHandlerBind::evictUnusedAllocations(bool waitForCompletion, bool isLockNeeded) {