[Bugfix][API-1122][DATA] Report IP address even after deactivation status is disconnected

Change-Id: I82a9b1988b68c586e6e64b21ebc58a10583fb2f9
(cherry picked from commit 9450376a32a1a48ea20e19ab6e7281cd4eeb5300)
diff --git a/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/data/RpDataController.cpp b/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/data/RpDataController.cpp
index bbb8790..8222aaf 100755
--- a/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/data/RpDataController.cpp
+++ b/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/data/RpDataController.cpp
@@ -75,6 +75,7 @@
 int RpDataController::s_dataSetting_resend[MAX_SIM_COUNT][DATA_SETTING_NUMBERS];
 RpDataController* RpDataController::sInstance[4] = {NULL};
 
+Mutex m_mutex[MAX_SIM_COUNT];
 
 #include <string>
 using namespace std;
@@ -497,7 +498,7 @@
         RFX_LOG_E(RFX_LOG_TAG, "[%s][%d] sim_ps_id[%d] NULL dataController", __FUNCTION__, __LINE__ ,sim_ps_id);
         return;
     }
-
+    m_mutex[sim_ps_id - 1].lock();
     RmcDcPdnManager* pPdnManager = dataController->m_pPdnManager;
 
     if (pPdnManager == NULL){
@@ -515,6 +516,7 @@
         dataController->sendDataCallListResponse(result_ptr->id);
         pPdnManager->clearPdnInfo(result_ptr->id);
     }
+    m_mutex[sim_ps_id - 1].unlock();
 }
 
 
@@ -705,7 +707,7 @@
             RFX_ASSERT(m_pPdnManager != NULL);
         }
     }
-    RFX_LOG_D(RFX_LOG_TAG, "%s %d m_pPdnManager[%p]", __FUNCTION__, __LINE__, m_pPdnManager);
+    //RFX_LOG_D(RFX_LOG_TAG, "%s %d m_pPdnManager[%p]", __FUNCTION__, __LINE__, m_pPdnManager);
     return  m_pPdnManager ;
 }
 
@@ -1381,7 +1383,7 @@
         goto error;
     }
 
-
+    m_mutex[rid].lock();
     for (int i = 0; i < nPdnInfoSize; i++) {
         if ((getPdnManager()->getPdnActiveStatus(i) == DATA_STATE_ACTIVE) &&
                 (getPdnManager()->getTransIntfId(i) != INVALID_TRANS_INTF_ID) &&
@@ -1390,7 +1392,7 @@
                 vTransIntfIdList.push_back(getPdnManager()->getTransIntfId(i));
         }
     }
-
+    m_mutex[rid].unlock();
     if (vTransIntfIdList.size() > 0) {
         RFX_LOG_D(RFX_LOG_TAG, "[%d][%s] active trans-interface number is %zu",
                 rid, __FUNCTION__, vTransIntfIdList.size());
diff --git a/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/data/RpDataController.h b/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/data/RpDataController.h
index 88d6d22..4a1fc60 100755
--- a/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/data/RpDataController.h
+++ b/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/data/RpDataController.h
@@ -48,6 +48,10 @@
 
 
 #include <utils/Vector.h>
+#include "utils/Mutex.h"
+
+using ::android::Mutex;
+
 
 #define DATA_SETTING_NUMBERS   5