diff --git a/mgmt/p2p_func.c b/mgmt/p2p_func.c
index f7c4659..a690309 100644
--- a/mgmt/p2p_func.c
+++ b/mgmt/p2p_func.c
@@ -1282,6 +1282,10 @@
 p2pFuncDissolve(IN P_ADAPTER_T prAdapter,
 		IN P_BSS_INFO_T prP2pBssInfo, IN BOOLEAN fgSendDeauth, IN UINT_16 u2ReasonCode)
 {
+	P_STA_RECORD_T prCurrStaRec, prExistStaRec;
+	P_LINK_T prClientList;
+	BOOLEAN fgIsExist;
+
 	DEBUGFUNC("p2pFuncDissolve()");
 
 	do {
@@ -1320,23 +1324,31 @@
 			/* Under AP mode, we would net send deauthentication frame to each STA.
 			 * We only stop the Beacon & let all stations timeout.
 			 */
-			{
-				P_STA_RECORD_T prCurrStaRec;
-				P_LINK_T prClientList;
+			/* Send deauth. */
+			authSendDeauthFrame(prAdapter,
+					    prP2pBssInfo,
+					    NULL, (P_SW_RFB_T) NULL, u2ReasonCode, (PFN_TX_DONE_HANDLER) NULL);
 
-				/* Send deauth. */
-				authSendDeauthFrame(prAdapter,
-						    prP2pBssInfo,
-						    NULL, (P_SW_RFB_T) NULL, u2ReasonCode, (PFN_TX_DONE_HANDLER) NULL);
+			prClientList = &prP2pBssInfo->rStaRecOfClientList;
 
-				prClientList = &prP2pBssInfo->rStaRecOfClientList;
+			LINK_FOR_EACH_ENTRY(prCurrStaRec, prClientList, rLinkEntry, STA_RECORD_T) {
+				ASSERT(prCurrStaRec);
+				p2pFuncDisconnect(prAdapter, prP2pBssInfo, prCurrStaRec, TRUE, u2ReasonCode);
 
-				LINK_FOR_EACH_ENTRY(prCurrStaRec, prClientList, rLinkEntry, STA_RECORD_T) {
-					ASSERT(prCurrStaRec);
-					p2pFuncDisconnect(prAdapter, prP2pBssInfo, prCurrStaRec, TRUE, u2ReasonCode);
+				/* The current StaRec may be removed in p2pFuncDisconnect() due to */
+				/* The limited resource, like the Cmd Free list */
+				fgIsExist = FALSE;/* Check the StaRec is not removed */
+				LINK_FOR_EACH_ENTRY(prExistStaRec, prClientList, rLinkEntry, STA_RECORD_T) {
+					if (prCurrStaRec == prExistStaRec) {
+						fgIsExist = TRUE;
+						break;
+					}
 				}
+				if (!fgIsExist)/* This StaRec was be deleted */
+					/* Reset prCurrStaRec to the first element of prClientList */
+					prCurrStaRec =
+						LINK_ENTRY(prClientList->prNext, STA_RECORD_T, rLinkEntry);
 			}
-
 			break;
 		default:
 			return;	/* 20110420 -- alreay in Device Mode. */
