--- ./source/private_module/src/fclgnfc2.c	2019-06-24 09:48:54.368962597 +0000
+++ ./source/private_module/src/fclgnfc2.c.hotpatch	2020-01-07 03:46:33.754540000 +0000
@@ -2753,6 +2753,12 @@
 
     fcLgn = fcExch->fc2Lgn;
     fcLgn->fcExch = NULL;
+    
+    if (NULL == fcLgn->fcPortal)
+    {
+        tsdkTrace(hpRoot, "FcLgn(0x%llx) has been released.", fcLgn);
+        return (TRUE);
+    }
 
     if (rspFlags & FC_SFS_RSP_TIMEOUT)
     {
@@ -2986,12 +2992,6 @@
  *
  *   This is be used to send a PLOGI accept to a remote port
  *
- * @param hpRoot    Pointer to the root data structure for this port instance
- * @param fcLgn     Pointer to login instance handle
- *
- * @return fcRcSuccess
- * @return fcRcFailure
- *
  */
 LOCAL bit32 fiFc2SendPlogiAcc(hpRoot_t *hpRoot, fcLgn_t *fcLgn)
 {
@@ -3016,7 +3016,7 @@
         fmTraceFuncExit(hpDBG_VERY_LOUD, 'a', "gm");
         return fcRcFailure ;
     }
-
+    fiLgnReleaseCallBack(fcLgn);
     /* Associate this login with the exchange */
     fcExch->fc2Lgn = fcLgn;
     fcExch->fc4Lgn = NULL;
@@ -4389,7 +4389,12 @@
     fmTraceFuncEnter(hpDBG_VERY_LOUD, "dh");
 
     fcLgn = (fcLgn_t*)handle;
-
+    if (NULL == fcLgn->fcPortal)
+    {
+        tsdkTrace(hpRoot, "FcLgn(0x%llx) has been released.", fcLgn);
+        return;
+    }
+    
     switch (event)
     {
     case FC2_TIMER_INIT_EVENT:
@@ -4475,11 +4480,6 @@
  * fiFc2ExternalEvent()
  *
  *  Called by other modules to let a spicific login know about an event.
- *
- * @param hpRoot
- * @param fc2Lgn
- * @param fc2event
- *
  * @return
  */
 GLOBAL void fiFc2ExternalEvent(hpRoot_t *hpRoot, fcLgn_t *fcLgn, fcFc2ExternEvent_e event)
