diff --git a/CORE/VOSS/src/vos_memory.c b/CORE/VOSS/src/vos_memory.c
index e87cfd3..44e0e4c 100644
--- a/CORE/VOSS/src/vos_memory.c
+++ b/CORE/VOSS/src/vos_memory.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved.
  *
  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
  *
@@ -492,7 +492,7 @@
    if ((pDst == NULL) || (pSrc==NULL))
    {
       VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
-                "%s called with NULL parameter, source:%p destination:%p",
+                "%s called with NULL parameter, source:%pK destination:%pK",
                 __func__, pSrc, pDst);
       VOS_ASSERT(0);
       return;
@@ -511,7 +511,7 @@
    if ((pDst == NULL) || (pSrc==NULL))
    {
       VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
-                "%s called with NULL parameter, source:%p destination:%p",
+                "%s called with NULL parameter, source:%pK destination:%pK",
                 __func__, pSrc, pDst);
       VOS_ASSERT(0);
       return;
@@ -541,7 +541,7 @@
    if ((pMemory1 == NULL) || (pMemory2==NULL))
    {
       VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
-                "%s called with NULL parameter, p1:%p p2:%p",
+                "%s called with NULL parameter, p1:%pK p2:%pK",
                 __func__, pMemory1, pMemory2);
       VOS_ASSERT(0);
       return VOS_FALSE;
diff --git a/CORE/VOSS/src/vos_nvitem.c b/CORE/VOSS/src/vos_nvitem.c
index 5b4c604..307c594 100644
--- a/CORE/VOSS/src/vos_nvitem.c
+++ b/CORE/VOSS/src/vos_nvitem.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved.
  *
  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
  *
@@ -1760,7 +1760,7 @@
       (NULL == pMacAddress))
    {
       VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
-          " Invalid Parameter from NV Client macCount %d, pMacAddress %p",
+          " Invalid Parameter from NV Client macCount %d, pMacAddress %pK",
           macCount, pMacAddress);
    }
 
diff --git a/CORE/VOSS/src/vos_packet.c b/CORE/VOSS/src/vos_packet.c
index 7332176..0135682 100644
--- a/CORE/VOSS/src/vos_packet.c
+++ b/CORE/VOSS/src/vos_packet.c
@@ -230,7 +230,7 @@
       didOne = VOS_TRUE;
 
       VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO,
-                "VPKT [%d]: [%p] Packet replenished",
+                "VPKT [%d]: [%pK] Packet replenished",
                 __LINE__, pVosPacket);
 
    }
@@ -256,7 +256,7 @@
       pVosPacket->timestamp = vos_timer_get_system_ticks();
 
       VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO,
-                "VPKT [%d]: [%p] Packet replenish callback",
+                "VPKT [%d]: [%pK] Packet replenish callback",
                 __LINE__, pVosPacket);
 
       callback = gpVosPacketContext->rxRawLowResourceInfo.callback;
@@ -775,7 +775,7 @@
    }
 
    VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO,
-             "VPKT [%d]: [%p] Packet allocated, type %d[%s]",
+             "VPKT [%d]: [%pK] Packet allocated, type %d[%s]",
              __LINE__, pVosPacket, pktType, vos_pkti_packet_type_str(pktType));
 
    *ppPacket = pVosPacket;
@@ -959,7 +959,7 @@
    pVosPacket->timestamp = vos_timer_get_system_ticks();
 
    VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO,
-             "VPKT [%d]: [%p] Packet allocated, type %s",
+             "VPKT [%d]: [%pK] Packet allocated, type %s",
              __LINE__, pVosPacket, vos_pkti_packet_type_str(pktType));
 
    *ppPacket = pVosPacket;
@@ -1393,12 +1393,12 @@
          if(callback)
          {
              // [DEBUG]
-             VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO,"VPKT [%d]: recycle %p",  __LINE__, pPacket);
+             VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO,"VPKT [%d]: recycle %pK",  __LINE__, pPacket);
 
              // yes, so rather than placing the packet back in the free pool
              // we will invoke the low resource callback
              VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO,
-                       "VPKT [%d]: [%p] Packet recycled, type %d[%s]",
+                       "VPKT [%d]: [%pK] Packet recycled, type %d[%s]",
                        __LINE__, pPacket, pPacket->packetType,
                        vos_pkti_packet_type_str(pPacket->packetType));
 
@@ -1424,7 +1424,7 @@
          // this packet does not satisfy a low resource condition
          // so put it back in the appropriate free pool
          VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO,
-                   "VPKT [%d]: [%p] Packet returned, type %d[%s]",
+                   "VPKT [%d]: [%pK] Packet returned, type %d[%s]",
                    __LINE__, pPacket, pPacket->packetType,
                    vos_pkti_packet_type_str(pPacket->packetType));
          mutex_lock(mlock);
@@ -2137,7 +2137,7 @@
    {
       VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL,
                 "VPKT [%d]: Insufficient headroom, "
-                "head[%p], data[%p], req[%d]",
+                "head[%pK], data[%pK], req[%d]",
                 __LINE__, skb->head, skb->data, dataSize);
       return VOS_STATUS_E_INVAL;
    }
@@ -2219,7 +2219,7 @@
    {
       VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_WARN,
                 "VPKT [%d]: Insufficient headroom, "
-                "head[%p], data[%p], req[%d]",
+                "head[%pK], data[%pK], req[%d]",
                 __LINE__, skb->head, skb->data, dataSize);
     
       if ((newskb = skb_realloc_headroom(skb, dataSize)) == NULL) {
@@ -2301,7 +2301,7 @@
    {
       VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_WARN,
                 "VPKT [%d]: Insufficient headroom, "
-                "head[%p], data[%p], req[%d]",
+                "head[%pK], data[%pK], req[%d]",
                 __LINE__, skb->head, skb->data, dataSize);
     
       if ((newskb = skb_realloc_headroom(skb, dataSize)) == NULL) {
@@ -2528,7 +2528,7 @@
    {
       VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL,
                 "VPKT [%d]: Insufficient tailroom, "
-                "tail[%p], end[%p], req[%d]",
+                "tail[%pK], end[%pK], req[%d]",
                 __LINE__, skb_tail_pointer(skb),
                 skb_end_pointer(skb), dataSize);
       return VOS_STATUS_E_INVAL;
@@ -2609,7 +2609,7 @@
    {
       VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL,
                 "VPKT [%d]: Insufficient tailroom, "
-                "tail[%p], end[%p], req[%d]",
+                "tail[%pK], end[%pK], req[%d]",
                 __LINE__, skb_tail_pointer(skb),
                 skb_end_pointer(skb), dataSize);
       return VOS_STATUS_E_INVAL;
diff --git a/CORE/VOSS/src/vos_timer.c b/CORE/VOSS/src/vos_timer.c
index 44e8681..8b6970d 100644
--- a/CORE/VOSS/src/vos_timer.c
+++ b/CORE/VOSS/src/vos_timer.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2013, 2015-2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2013, 2015-2017 The Linux Foundation. All rights reserved.
  *
  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
  *
@@ -780,7 +780,7 @@
    unsigned long flags;
      
    VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO_HIGH, 
-             "Timer Addr inside voss_start : 0x%p ", timer );
+             "Timer Addr inside voss_start : 0x%pK ", timer );
    
    // Check for invalid pointer
    if ( NULL == timer )
@@ -875,7 +875,7 @@
    unsigned long flags;
 
    VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO_HIGH, 
-               "%s: Timer Addr inside voss_stop : 0x%p",__func__,timer );
+               "%s: Timer Addr inside voss_stop : 0x%pK",__func__,timer );
 
    // Check for invalid pointer
    if ( NULL == timer )
