diff --git a/layers/mem_tracker.c b/layers/mem_tracker.c
index 44e6e27..aaf30df 100644
--- a/layers/mem_tracker.c
+++ b/layers/mem_tracker.c
@@ -120,7 +120,7 @@
     return pTrav;
 }
 // Set fence for given cb in global cb node
-static bool32_t setCBFence(const XGL_CMD_BUFFER cb, const XGL_FENCE fence)
+static bool32_t setCBFence(const XGL_CMD_BUFFER cb, const XGL_FENCE fence, bool32_t localFlag)
 {
     GLOBAL_CB_NODE* pTrav = getGlobalCBNode(cb);
     if (!pTrav) {
@@ -130,6 +130,7 @@
         return XGL_FALSE;
     }
     pTrav->fence = fence;
+    pTrav->localFlag = localFlag;
     return XGL_TRUE;
 }
 
@@ -284,6 +285,11 @@
         layerCbMsg(XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0, cb, 0, MEMTRACK_INVALID_CB, "MEM", str);
         return XGL_FALSE;
     }
+    if ((pCBTrav->fence != NULL) && (pCBTrav->localFlag == XGL_TRUE)) {
+        nextTable.DestroyObject(pCBTrav->fence);
+        pCBTrav->fence = NULL;
+        pCBTrav->localFlag = XGL_FALSE;
+    }
     MINI_NODE* pMemTrav = pCBTrav->pMemObjList;
     MINI_NODE* pDeleteMe = NULL;
     // We traverse LL in order and free nodes as they're cleared
@@ -853,10 +859,12 @@
 
 XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglQueueSubmit(XGL_QUEUE queue, uint32_t cmdBufferCount, const XGL_CMD_BUFFER* pCmdBuffers, uint32_t memRefCount, const XGL_MEMORY_REF* pMemRefs, XGL_FENCE fence)
 {
+    bool32_t localFlag = XGL_FALSE;
     // TODO : Need to track fence and clear mem references when fence clears
     XGL_FENCE localFence = fence;
     if (XGL_NULL_HANDLE == fence) { // allocate our own fence to track cmd buffer
         localFence = createLocalFence();
+        localFlag = XGL_TRUE;
     }
     char str[1024];
     sprintf(str, "In xglQueueSubmit(), checking %u cmdBuffers with %u memRefs", cmdBufferCount, memRefCount);
@@ -864,7 +872,7 @@
     printMemList();
     printGlobalCB();
     for (uint32_t i = 0; i < cmdBufferCount; i++) {
-        setCBFence(pCmdBuffers[i], localFence);
+        setCBFence(pCmdBuffers[i], localFence, localFlag);
         sprintf(str, "Verifying mem refs for CB %p", pCmdBuffers[i]);
         layerCbMsg(XGL_DBG_MSG_UNKNOWN, XGL_VALIDATION_LEVEL_0, pCmdBuffers[i], 0, MEMTRACK_NONE, "MEM", str);
         if (XGL_FALSE == validateCBMemRef(pCmdBuffers[i], memRefCount, pMemRefs)) {
diff --git a/layers/mem_tracker.h b/layers/mem_tracker.h
index 5e26147..930d972 100644
--- a/layers/mem_tracker.h
+++ b/layers/mem_tracker.h
@@ -149,5 +149,6 @@
     uint32_t                        colorAttachmentCount;
     XGL_DEPTH_STENCIL_BIND_INFO     dsBindInfo;
     XGL_CMD_BUFFER cmdBuffer;
-    XGL_FENCE fence; // fence tracking this cmd buffer
+    XGL_FENCE fence;                // fence tracking this cmd buffer
+    bool32_t localFlag;             // fence is internal to layer
 } GLOBAL_CB_NODE;
