diff --git a/CORE/MAC/src/pe/lim/limAdmitControl.c b/CORE/MAC/src/pe/lim/limAdmitControl.c
index 9f3cb9d..afcf203 100644
--- a/CORE/MAC/src/pe/lim/limAdmitControl.c
+++ b/CORE/MAC/src/pe/lim/limAdmitControl.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2013 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2013, 2017 The Linux Foundation. All rights reserved.
  *
  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
  *
@@ -554,7 +554,7 @@
         return;
         //pierre
     limLog(pMac, ADMIT_CONTROL_LOGLEVEL, FL("tspec entry = %d"), pInfo->idx);
-    limLog(pMac, ADMIT_CONTROL_LOGLEVEL, FL("delete tspec %p"), pInfo);
+    limLog(pMac, ADMIT_CONTROL_LOGLEVEL, FL("delete tspec %pK"), pInfo);
     pInfo->inuse = 0;
 
     // clear the hcca/parameterized queue indicator
diff --git a/CORE/MAC/src/pe/lim/limApi.c b/CORE/MAC/src/pe/lim/limApi.c
index b21ad3a..64b0bd6 100644
--- a/CORE/MAC/src/pe/lim/limApi.c
+++ b/CORE/MAC/src/pe/lim/limApi.c
@@ -1428,7 +1428,7 @@
     if(mHdr->fc.type == SIR_MAC_MGMT_FRAME) 
     {
     PELOG1(limLog( pMac, LOG1,
-       FL ( "RxBd=%p mHdr=%p Type: %d Subtype: %d  Sizes:FC%d Mgmt%d"),
+       FL ( "RxBd=%pK mHdr=%pK Type: %d Subtype: %d  Sizes:FC%d Mgmt%d"),
        pRxPacketInfo, mHdr, mHdr->fc.type, mHdr->fc.subType, sizeof(tSirMacFrameCtl), sizeof(tSirMacMgmtHdr) );)
 
 #ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
diff --git a/CORE/MAC/src/pe/lim/limFT.c b/CORE/MAC/src/pe/lim/limFT.c
index ba78826..31cc75b 100644
--- a/CORE/MAC/src/pe/lim/limFT.c
+++ b/CORE/MAC/src/pe/lim/limFT.c
@@ -72,7 +72,7 @@
     if (pMac->ft.ftPEContext.pFTPreAuthReq) 
     {
 #if defined WLAN_FEATURE_VOWIFI_11R_DEBUG
-        PELOGE(limLog( pMac, LOGE, "%s: Freeing pFTPreAuthReq= %p",
+        PELOGE(limLog( pMac, LOGE, "%s: Freeing pFTPreAuthReq= %pK",
             __func__, pMac->ft.ftPEContext.pFTPreAuthReq);) 
 #endif
         if (pMac->ft.ftPEContext.pFTPreAuthReq->pbssDescription)
@@ -89,7 +89,7 @@
     if (pMac->ft.ftPEContext.psavedsessionEntry)
     {
 #if defined WLAN_FEATURE_VOWIFI_11R_DEBUG
-        PELOGE(limLog( pMac, LOGE, "%s: Setting psavedsessionEntry= %p to NULL",
+        PELOGE(limLog( pMac, LOGE, "%s: Setting psavedsessionEntry= %pK to NULL",
             __func__, pMac->ft.ftPEContext.psavedsessionEntry);) 
 #endif
         pMac->ft.ftPEContext.psavedsessionEntry = NULL;
@@ -106,7 +106,7 @@
             peDeleteSession(pMac, pMac->ft.ftPEContext.pftSessionEntry);
         }
 #if defined WLAN_FEATURE_VOWIFI_11R_DEBUG
-        PELOGE(limLog( pMac, LOGE, "%s: Setting pftSessionEntry= %p to NULL",
+        PELOGE(limLog( pMac, LOGE, "%s: Setting pftSessionEntry= %pK to NULL",
             __func__, pMac->ft.ftPEContext.pftSessionEntry);)
 #endif
         pMac->ft.ftPEContext.pftSessionEntry = NULL;
@@ -136,7 +136,7 @@
     if (pMac->ft.ftPEContext.pFTPreAuthReq) 
     {
 #if defined WLAN_FEATURE_VOWIFI_11R_DEBUG
-        PELOGE(limLog( pMac, LOGE, "%s: Freeing pFTPreAuthReq= %p",
+        PELOGE(limLog( pMac, LOGE, "%s: Freeing pFTPreAuthReq= %pK",
             __func__, pMac->ft.ftPEContext.pFTPreAuthReq);) 
 #endif
         if (pMac->ft.ftPEContext.pFTPreAuthReq->pbssDescription)
@@ -154,7 +154,7 @@
     if (pMac->ft.ftPEContext.psavedsessionEntry)
     {
 #if defined WLAN_FEATURE_VOWIFI_11R_DEBUG
-        PELOGE(limLog( pMac, LOGE, "%s: Setting psavedsessionEntry= %p to NULL",
+        PELOGE(limLog( pMac, LOGE, "%s: Setting psavedsessionEntry= %pK to NULL",
             __func__, pMac->ft.ftPEContext.psavedsessionEntry);) 
 #endif
         pMac->ft.ftPEContext.psavedsessionEntry = NULL;
@@ -166,7 +166,7 @@
     {
 
 #if defined WLAN_FEATURE_VOWIFI_11R_DEBUG
-        PELOGE(limLog( pMac, LOGE, "%s: Deleting session = %p ",
+        PELOGE(limLog( pMac, LOGE, "%s: Deleting session = %pK ",
             __func__, pMac->ft.ftPEContext.pftSessionEntry);) 
 #endif
         /* Delete the previous valid preauth pesession if it is still in
@@ -191,7 +191,7 @@
     if (pMac->ft.ftPEContext.pAddBssReq)
     {
 #if defined WLAN_FEATURE_VOWIFI_11R_DEBUG
-        PELOGE(limLog( pMac, LOGE, "%s: Freeing AddBssReq = %p ",
+        PELOGE(limLog( pMac, LOGE, "%s: Freeing AddBssReq = %pK ",
             __func__, pMac->ft.ftPEContext.pAddBssReq);) 
 #endif
         vos_mem_free(pMac->ft.ftPEContext.pAddBssReq);
@@ -202,7 +202,7 @@
     if (pMac->ft.ftPEContext.pAddStaReq)
     {
 #if defined WLAN_FEATURE_VOWIFI_11R_DEBUG
-        PELOGE(limLog( pMac, LOGE, "%s: Freeing AddStaReq = %p ",
+        PELOGE(limLog( pMac, LOGE, "%s: Freeing AddStaReq = %pK ",
             __func__, pMac->ft.ftPEContext.pAddStaReq);) 
 #endif
         vos_mem_free(pMac->ft.ftPEContext.pAddStaReq);
@@ -303,14 +303,14 @@
     {
         // Need to suspend link only if the channels are different
         limLog(pMac, LOG1, FL(" Performing pre-auth on different"
-               " channel (session %p)"), psessionEntry);
+               " channel (session %pK)"), psessionEntry);
         limSuspendLink(pMac, eSIR_CHECK_ROAMING_SCAN, FTPreAuthSuspendLinkHandler, 
                        (tANI_U32 *)psessionEntry); 
     }
     else 
     {
         limLog(pMac, LOG1, FL(" Performing pre-auth on same"
-               " channel (session %p)"), psessionEntry);
+               " channel (session %pK)"), psessionEntry);
         // We are in the same channel. Perform pre-auth
         limPerformFTPreAuth(pMac, eHAL_STATUS_SUCCESS, NULL, psessionEntry);
     }
@@ -349,7 +349,7 @@
 
 #if defined WLAN_FEATURE_VOWIFI_11R_DEBUG
     limLog(pMac, LOG1, FL("Entered wait auth2 state for FT"
-           " (old session %p)"),
+           " (old session %pK)"),
            pMac->ft.ftPEContext.psavedsessionEntry);
 #endif
 
@@ -1095,7 +1095,7 @@
     }
 
 #if defined WLAN_FEATURE_VOWIFI_11R_DEBUG
-    PELOGE(limLog( pMac, LOG1, FL("Auth Rsp = %p"), pFTPreAuthRsp);)
+    PELOGE(limLog( pMac, LOG1, FL("Auth Rsp = %pK"), pFTPreAuthRsp);)
 #endif
 
     vos_mem_zero(pFTPreAuthRsp, rspLen);
@@ -1220,7 +1220,7 @@
         pftSessionEntry->limPrevSmeState = pftSessionEntry->limSmeState;
         pftSessionEntry->limSmeState = eLIM_SME_WT_REASSOC_STATE;
         pMac->ft.ftPEContext.pftSessionEntry = pftSessionEntry;
-        PELOGE(limLog(pMac, LOG1,"%s:created session (%p) with id = %d",
+        PELOGE(limLog(pMac, LOG1,"%s:created session (%pK) with id = %d",
                       __func__, pftSessionEntry, pftSessionEntry->peSessionId);)
 
         /* Update the ReAssoc BSSID of the current session */
@@ -1436,7 +1436,7 @@
         pMac->ft.ftPEContext.pFTPreAuthReq->bPreAuthRspProcessed)
     {
         limLog(pMac,LOGE,FL("Auth rsp already posted to SME"
-               " (session %p)"), psessionEntry);
+               " (session %pK)"), psessionEntry);
         return;
     }
     else
@@ -1449,7 +1449,7 @@
          * limProcessAuthFrameNoSession.
          */
         limLog(pMac,LOG1,FL("Auth rsp not yet posted to SME"
-               " (session %p)"), psessionEntry);
+               " (session %pK)"), psessionEntry);
         pMac->ft.ftPEContext.pFTPreAuthReq->bPreAuthRspProcessed =
             eANI_BOOLEAN_TRUE;
     }
diff --git a/CORE/MAC/src/pe/lim/limLinkMonitoringAlgo.c b/CORE/MAC/src/pe/lim/limLinkMonitoringAlgo.c
index d60902a..2dd26a7 100644
--- a/CORE/MAC/src/pe/lim/limLinkMonitoringAlgo.c
+++ b/CORE/MAC/src/pe/lim/limLinkMonitoringAlgo.c
@@ -321,7 +321,7 @@
         pStaDs->sta_deletion_in_progress) {
          /* Already in the process of deleting context for the peer */
         limLog(pMac, LOG1,
-            FL("Deletion is in progress (%d) for peer:%p in mlmState %d"),
+            FL("Deletion is in progress (%d) for peer:%pK in mlmState %d"),
             pStaDs->sta_deletion_in_progress, pStaDs->staAddr,
             pStaDs->mlmStaContext.mlmState);
          return;
diff --git a/CORE/MAC/src/pe/lim/limLogDump.c b/CORE/MAC/src/pe/lim/limLogDump.c
index 9280c7d..af5c95e 100644
--- a/CORE/MAC/src/pe/lim/limLogDump.c
+++ b/CORE/MAC/src/pe/lim/limLogDump.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2013, 2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2013, 2016-2017 The Linux Foundation. All rights reserved.
  *
  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
  *
@@ -2142,7 +2142,7 @@
                    p += log_sprintf( pMac, p, "%s: Session %02x %02x %02x\n", __func__, 
                             psessionEntry->bssId[0],
                             psessionEntry->bssId[1], psessionEntry->bssId[2]);
-                   p += log_sprintf( pMac, p, "%s: Session %02x %02x %02x %p\n", __func__, 
+                   p += log_sprintf( pMac, p, "%s: Session %02x %02x %02x %pK\n", __func__, 
                             pftPreAuthReq->currbssId[0],
                             pftPreAuthReq->currbssId[1], 
                             pftPreAuthReq->currbssId[2], pftPreAuthReq);
diff --git a/CORE/MAC/src/pe/lim/limP2P.c b/CORE/MAC/src/pe/lim/limP2P.c
index b420404..988e235 100644
--- a/CORE/MAC/src/pe/lim/limP2P.c
+++ b/CORE/MAC/src/pe/lim/limP2P.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2014, 2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2014, 2016-2017 The Linux Foundation. All rights reserved.
  *
  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
  *
@@ -896,7 +896,7 @@
 
     pIe = limGetIEPtr(pMac,pIeStartPtr, nBytes,
                                        DOT11F_EID_HTCAPS,ONE_BYTE);
-    limLog( pMac, LOG2, FL("pIe %p dot11HtCap.supportedMCSSet[0]=0x%x"),
+    limLog( pMac, LOG2, FL("pIe %pK dot11HtCap.supportedMCSSet[0]=0x%x"),
             pIe, dot11HtCap.supportedMCSSet[0]);
     if(pIe)
     {
@@ -1110,7 +1110,7 @@
                 }
                 nBytes += noaLen;
                 limLog( pMac, LOGE,
-                        FL("noaLen=%d origLen=%d pP2PIe=%p"
+                        FL("noaLen=%d origLen=%d pP2PIe=%pK"
                            " nBytes=%d nBytesToCopy=%zu"),
                         noaLen,origLen, pP2PIe, nBytes,
                         ((pP2PIe + origLen + 2) - (v_U8_t *)pMbMsg->data));
diff --git a/CORE/MAC/src/pe/lim/limProcessAuthFrame.c b/CORE/MAC/src/pe/lim/limProcessAuthFrame.c
index 04d676d..848dbc5 100644
--- a/CORE/MAC/src/pe/lim/limProcessAuthFrame.c
+++ b/CORE/MAC/src/pe/lim/limProcessAuthFrame.c
@@ -1921,14 +1921,14 @@
          * pre-auth.
          */
         PELOGE(limLog(pMac,LOG1,"Auth rsp already posted to SME"
-               " (session %p, FT session %p)", psessionEntry,
+               " (session %pK, FT session %pK)", psessionEntry,
                pMac->ft.ftPEContext.pftSessionEntry););
         return eSIR_SUCCESS;
     }
     else
     {
         PELOGE(limLog(pMac,LOGW,"Auth rsp not yet posted to SME"
-               " (session %p, FT session %p)", psessionEntry,
+               " (session %pK, FT session %pK)", psessionEntry,
                pMac->ft.ftPEContext.pftSessionEntry););
         pMac->ft.ftPEContext.pFTPreAuthReq->bPreAuthRspProcessed =
             eANI_BOOLEAN_TRUE;
diff --git a/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c b/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
index 2e382d9..195f844 100644
--- a/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
@@ -285,7 +285,7 @@
    if( pMac->lim.gpLimSuspendCallback ||
        pMac->lim.gLimSystemInScanLearnMode )
    {
-      limLog( pMac, LOGE, FL("Something is wrong, SuspendLinkCbk:%p "
+      limLog( pMac, LOGE, FL("Something is wrong, SuspendLinkCbk:%pK "
               "IsSystemInScanLearnMode:%d"), pMac->lim.gpLimSuspendCallback,
                pMac->lim.gLimSystemInScanLearnMode );
       callback( pMac, eHAL_STATUS_FAILURE, data ); 
diff --git a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
index feb52ac..52c0799 100644
--- a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
@@ -961,7 +961,7 @@
      */
     if (pMac->ft.ftPEContext.pFTPreAuthReq)
     {
-        limLog(pMac, LOG1, "%s: Freeing pFTPreAuthReq= %p", __func__,
+        limLog(pMac, LOG1, "%s: Freeing pFTPreAuthReq= %pK", __func__,
                pMac->ft.ftPEContext.pFTPreAuthReq);
         if (pMac->ft.ftPEContext.pFTPreAuthReq->pbssDescription)
         {
diff --git a/CORE/MAC/src/pe/lim/limRMC.c b/CORE/MAC/src/pe/lim/limRMC.c
index 86b302e..5d29ac4 100644
--- a/CORE/MAC/src/pe/lim/limRMC.c
+++ b/CORE/MAC/src/pe/lim/limRMC.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2017 The Linux Foundation. All rights reserved.
  *
  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
  *
@@ -119,7 +119,7 @@
     {
         entry = (tLimRmcGroupContext *)vos_mem_malloc(sizeof(*entry));
 
-        PELOG1(limLog(pMac, LOG1, FL("RMC: Hash Insert:new entry %p"), entry);)
+        PELOG1(limLog(pMac, LOG1, FL("RMC: Hash Insert:new entry %pK"), entry);)
 
         if (entry)
         {
@@ -186,7 +186,7 @@
                 prev->next = entry->next;
             }
 
-            PELOG1(limLog(pMac, LOG1, FL("RMC: Hash Delete: entry %p "
+            PELOG1(limLog(pMac, LOG1, FL("RMC: Hash Delete: entry %pK "
                          " transmitter " MAC_ADDRESS_STR), entry
                              MAC_ADDR_ARRAY(transmitter));)
 
diff --git a/CORE/MAC/src/pe/lim/limSecurityUtils.c b/CORE/MAC/src/pe/lim/limSecurityUtils.c
index 9f88436..bffffb0 100644
--- a/CORE/MAC/src/pe/lim/limSecurityUtils.c
+++ b/CORE/MAC/src/pe/lim/limSecurityUtils.c
@@ -433,7 +433,7 @@
 
         limLog(pMac, LOG1, FL(" first node to delete"));
         limLog(pMac, LOG1,
-               FL(" Release data entry:%p idx %d peer: " MAC_ADDRESS_STR),
+               FL(" Release data entry:%pK idx %d peer: " MAC_ADDRESS_STR),
                                          pTempNode, pTempNode->authNodeIdx,
                                                    MAC_ADDR_ARRAY(macAddr));
         limReleasePreAuthNode(pMac, pTempNode);
@@ -455,7 +455,7 @@
 
             limLog(pMac, LOG1, FL(" subsequent node to delete"));
             limLog(pMac, LOG1,
-                   FL("Release data entry: %p id %d peer: "MAC_ADDRESS_STR),
+                   FL("Release data entry: %pK id %d peer: "MAC_ADDRESS_STR),
                    pTempNode, pTempNode->authNodeIdx, MAC_ADDR_ARRAY(macAddr));
             limReleasePreAuthNode(pMac, pTempNode);
 
diff --git a/CORE/MAC/src/pe/lim/lim_mbb.c b/CORE/MAC/src/pe/lim/lim_mbb.c
index e9977b5..fdf18a2 100644
--- a/CORE/MAC/src/pe/lim/lim_mbb.c
+++ b/CORE/MAC/src/pe/lim/lim_mbb.c
@@ -919,7 +919,7 @@
 
         ft_session_entry->limSmeState = eLIM_SME_WT_REASSOC_STATE;
         mac->ft.ftPEContext.pftSessionEntry = ft_session_entry;
-        limLog(mac, LOG1,"%s:created session (%p) with id = %d",
+        limLog(mac, LOG1,"%s:created session (%pK) with id = %d",
                __func__, ft_session_entry, ft_session_entry->peSessionId);
 
         /* Update the ReAssoc BSSID of the current session */
@@ -986,7 +986,7 @@
     if (eANI_BOOLEAN_TRUE ==
          mac->ft.ftPEContext.pFTPreAuthReq->bPreAuthRspProcessed) {
          limLog(mac, LOGE,
-                FL("Auth rsp already posted to SME session %p"), session_entry);
+                FL("Auth rsp already posted to SME session %pK"), session_entry);
          return;
     } else {
     /*
@@ -998,7 +998,7 @@
      * limProcessAuthFrameNoSession.
      */
      limLog(mac,LOG1,
-            FL("Auth rsp not yet posted to SME session %p)"), session_entry);
+            FL("Auth rsp not yet posted to SME session %pK)"), session_entry);
             mac->ft.ftPEContext.pFTPreAuthReq->bPreAuthRspProcessed =
            eANI_BOOLEAN_TRUE;
      }
@@ -1197,7 +1197,7 @@
      * can be in power save for connected AP.
      */
     limLog(mac, LOG1,
-           FL("pre-auth on channel %d (session %p) currentOperChannel %d"),
+           FL("pre-auth on channel %d (session %pK) currentOperChannel %d"),
            mac->ft.ftPEContext.pFTPreAuthReq->preAuthchannelNum,
            session_entry, session_entry->currentOperChannel);
     limSuspendLink(mac, eSIR_CHECK_ROAMING_SCAN,
@@ -1677,7 +1677,7 @@
 
     /* Freeup the cached preauth request */
     if (mac->ft.ftPEContext.pFTPreAuthReq) {
-        limLog(mac, LOG1, FL("Freeing pFTPreAuthReq= %p"),
+        limLog(mac, LOG1, FL("Freeing pFTPreAuthReq= %pK"),
                              mac->ft.ftPEContext.pFTPreAuthReq);
         if (mac->ft.ftPEContext.pFTPreAuthReq->pbssDescription) {
             vos_mem_free(mac->ft.ftPEContext.pFTPreAuthReq->pbssDescription);
