diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
index 36b1a2fd3409ff446015661cf1de3ecbede89a23..0d06fc1022a99ab6b20b6a977c79ea8fc9baeb1a 100644
--- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
+++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
@@ -4500,7 +4500,7 @@ _CacheOperation(
     )
 {
     PLINUX_MDL mdl = (PLINUX_MDL)Handle;
-    PLINUX_MDL_MAP mdlMap;
+    PLINUX_MDL_MAP mdlMap = gcvNULL;
     gckALLOCATOR allocator;
 
     if (!mdl || !mdl->allocator)
@@ -4513,11 +4513,14 @@ _CacheOperation(
 
     if (allocator->ops->Cache)
     {
-        mutex_lock(&mdl->mapsMutex);
+        if (ProcessID)
+        {
+            mutex_lock(&mdl->mapsMutex);
 
-        mdlMap = FindMdlMap(mdl, ProcessID);
+            mdlMap = FindMdlMap(mdl, ProcessID);
 
-        mutex_unlock(&mdl->mapsMutex);
+            mutex_unlock(&mdl->mapsMutex);
+        }
 
         if (ProcessID && mdlMap == gcvNULL)
         {
@@ -4534,8 +4537,6 @@ _CacheOperation(
         }
     }
 
-    _MemoryBarrier();
-
     return gcvSTATUS_OK;
 }