--- ./source/private_module/mp/mp_event.c	2018-02-09 07:36:26.000000000 +0000
+++ ./source/private_module/mp/mp_event.c.hotpatch	2021-11-24 08:18:32.000000000 +0000
@@ -205,14 +205,13 @@
 {
     PHYSICAL_LINK_S *phyLink = NULL;
     MP_LINK_EVENT_S *linkEvt = NULL;
-    /* begin b00285202@20150625 DTS2015061205343 */
+    MP_LINK_EVENT_TYPE_E linkType;
     if ((NULL == event)
         || (MP_PATH_PRIVATE != event->pathType)
         || (MP_LINK_ISCSI != event->drvType))
     {
         return;
     }
-    /* end b00285202@20150625 */
 
     /* begin b00285202@20150708 DTS2015070308281 */
     spin_lock(&g_mpEventMgr.pLock);
@@ -224,8 +223,9 @@
         return;
     }
     linkEvt = phyLink->linkEvent.event;
+    linkType = linkEvt->linkType;
 	spin_unlock(&g_mpEventMgr.pLock);
-    if (MP_LINK_EPL_DOWN == linkEvt->linkType)
+    if (MP_LINK_EPL_DOWN == linkType)
     {
         mpFinishLinkEventWithType(phyLink, MP_LINK_EPL_DOWN);
         (void)mpLinkSetStatus(phyLink, MP_DEV_READY);
@@ -877,11 +877,11 @@
         DBG_LogWarning(LOG_ID_MP_024E, "Finish link event but link is NULL.");
         return;
     }
-
-
     DBG_LogDebug(LOG_ID_MP_024F, "Finish link event (0x%x)in %s line %d.", phyLink->linkWwn, funcName, line);
+    spin_lock(&g_mpEventMgr.pLock);
     event = phyLink->linkEvent.event;
     phyLink->linkEvent.event = NULL;
+    spin_unlock(&g_mpEventMgr.pLock);
     mpFinishLinkEvent(event);
 }
 
