diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/ril.cpp b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/ril.cpp
index bc7d265..71bce71 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/ril.cpp
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/ril.cpp
@@ -4183,41 +4183,31 @@
             if(e == 0)
             {
                 RLOGD("[DATA]: deactive datacall success\n");
-                for(int j = 0; j < LYNQ_APN_CHANNEL_MAX; j++)
-                {
-                    RLOGD("lynq_apn_cid_table[j].uToken =%d, pRI->uToken = %d", lynq_apn_cid_table[j].deactive_utoken, pRI->uToken);
-                    if(lynq_apn_cid_table[j].used == 1 && lynq_apn_cid_table[j].deactive_utoken == pRI->uToken)
-                    {
-                        RLOGD("[DATA]delete cid is %d", lynq_apn_cid_table[j].cid);
-                        //delete
-                        bzero(lynq_apn_cid_table[j].apn,LYNQ_APN_LEN_MAX);
-                        bzero(lynq_apn_cid_table[j].apntype,LYNQ_APNTPYE_LEN_MAX);
-                        bzero(lynq_apn_cid_table[j].ifaceName,LYNQ_IFNAME_LEN_MAX);
-                        bzero(lynq_apn_cid_table[j].address,LYNQ_ADDRESS_LEN_MAX);
-                        lynq_apn_cid_table[j].cid = -1;
-                        lynq_apn_cid_table[j].used = -1;
-                        lynq_apn_cid_table[j].status = -1;
-                        lynq_apn_cid_table[j].dialing = -1;
-                        lynq_apn_cid_table[j].uToken = -1;
-                        lynq_apn_cid_table[j].deactive_utoken = -1;
-                        break;
-                    }
-                }
             }
             else
             {
                 RLOGD("[DATA]: deactive datacall fail\n");
-                for(int j = 0; j < LYNQ_APN_CHANNEL_MAX; j++)
+            }
+            for(int j = 0; j < LYNQ_APN_CHANNEL_MAX; j++)
+            {
+                RLOGD("lynq_apn_cid_table[j].uToken =%d, pRI->uToken = %d", lynq_apn_cid_table[j].deactive_utoken, pRI->uToken);
+                if(lynq_apn_cid_table[j].used == 1 && lynq_apn_cid_table[j].deactive_utoken == pRI->uToken)
                 {
-                    RLOGD("lynq_apn_cid_table[j].uToken =%d, pRI->uToken = %d", lynq_apn_cid_table[j].deactive_utoken, pRI->uToken);
-                    if(lynq_apn_cid_table[j].used == 1 && lynq_apn_cid_table[j].deactive_utoken == pRI->uToken)
-                    {
-                        lynq_apn_cid_table[j].deactive_utoken = -1;
-                        break;
-                    }
+                    RLOGD("[DATA]delete cid is %d", lynq_apn_cid_table[j].cid);
+                    //delete
+                    bzero(lynq_apn_cid_table[j].apn,LYNQ_APN_LEN_MAX);
+                    bzero(lynq_apn_cid_table[j].apntype,LYNQ_APNTPYE_LEN_MAX);
+                    bzero(lynq_apn_cid_table[j].ifaceName,LYNQ_IFNAME_LEN_MAX);
+                    bzero(lynq_apn_cid_table[j].address,LYNQ_ADDRESS_LEN_MAX);
+                    lynq_apn_cid_table[j].cid = -1;
+                    lynq_apn_cid_table[j].used = -1;
+                    lynq_apn_cid_table[j].status = -1;
+                    lynq_apn_cid_table[j].dialing = -1;
+                    lynq_apn_cid_table[j].uToken = -1;
+                    lynq_apn_cid_table[j].deactive_utoken = -1;
+                    break;
                 }
             }
-
         }
         //xf.li@20231102 add for t106 data start
         if(pRI->pCI->requestNumber == RIL_REQUEST_SETUP_DATA_CALL)
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp
index 421383b..78fc8b2 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp
@@ -1596,7 +1596,7 @@
         }
         return LYNQ_E_NO_INIT;
     }
-    lynq_data_call_response_v11_t data_call_info;
+    lynq_data_call_response_v11_t data_call_info = {0};
     data_call_handle_get(profile_idx,&handle);
     ret = lynq_get_data_call_list(&handle,&data_call_info);
     if (ret == 0)
