diff --git a/src/profiling/IPacketBuffer.hpp b/src/profiling/IPacketBuffer.hpp
index c61d232..1a97ca7 100644
--- a/src/profiling/IPacketBuffer.hpp
+++ b/src/profiling/IPacketBuffer.hpp
@@ -18,7 +18,7 @@
 public:
     virtual ~IReadOnlyPacketBuffer() {}
 
-    virtual const unsigned char* const GetReadableData() const = 0;
+    virtual const unsigned char* GetReadableData() const = 0;
 
     virtual unsigned int GetSize() const = 0;
 
diff --git a/src/profiling/Packet.hpp b/src/profiling/Packet.hpp
index ff6de69..c1f2796 100644
--- a/src/profiling/Packet.hpp
+++ b/src/profiling/Packet.hpp
@@ -66,13 +66,13 @@
     Packet& operator=(const Packet&) = delete;
     Packet& operator=(Packet&&) = default;
 
-    uint32_t GetHeader() const                 { return m_Header;        }
-    uint32_t GetPacketFamily() const           { return m_PacketFamily;  }
-    uint32_t GetPacketId() const               { return m_PacketId;      }
-    uint32_t GetPacketClass() const            { return m_PacketId >> 3; }
-    uint32_t GetPacketType() const             { return m_PacketId & 7;  }
-    uint32_t GetLength() const                 { return m_Length;        }
-    const unsigned char* const GetData() const { return m_Data.get();    }
+    uint32_t GetHeader() const           { return m_Header;        }
+    uint32_t GetPacketFamily() const     { return m_PacketFamily;  }
+    uint32_t GetPacketId() const         { return m_PacketId;      }
+    uint32_t GetPacketClass() const      { return m_PacketId >> 3; }
+    uint32_t GetPacketType() const       { return m_PacketId & 7;  }
+    uint32_t GetLength() const           { return m_Length;        }
+    const unsigned char* GetData() const { return m_Data.get();    }
 
     bool IsEmpty() { return m_Header == 0 && m_Length == 0; }
 
diff --git a/src/profiling/PacketBuffer.cpp b/src/profiling/PacketBuffer.cpp
index 88133d7..886561a 100644
--- a/src/profiling/PacketBuffer.cpp
+++ b/src/profiling/PacketBuffer.cpp
@@ -20,7 +20,7 @@
     m_Data = std::make_unique<unsigned char[]>(m_MaxSize);
 }
 
-const unsigned char* const PacketBuffer::GetReadableData() const
+const unsigned char* PacketBuffer::GetReadableData() const
 {
     return m_Data.get();
 }
diff --git a/src/profiling/PacketBuffer.hpp b/src/profiling/PacketBuffer.hpp
index a3d95d4..f03b301 100644
--- a/src/profiling/PacketBuffer.hpp
+++ b/src/profiling/PacketBuffer.hpp
@@ -22,7 +22,7 @@
 
     ~PacketBuffer() {}
 
-    const unsigned char* const GetReadableData() const  override;
+    const unsigned char* GetReadableData() const  override;
 
     unsigned int GetSize() const  override;
 
@@ -42,4 +42,4 @@
 
 } // namespace profiling
 
-} // namespace armnn
\ No newline at end of file
+} // namespace armnn
diff --git a/src/profiling/test/SendCounterPacketTests.hpp b/src/profiling/test/SendCounterPacketTests.hpp
index d70239e..cd41418 100644
--- a/src/profiling/test/SendCounterPacketTests.hpp
+++ b/src/profiling/test/SendCounterPacketTests.hpp
@@ -118,7 +118,7 @@
 
     ~MockPacketBuffer() {}
 
-    const unsigned char* const GetReadableData() const override { return m_Data.get(); }
+    const unsigned char* GetReadableData() const override { return m_Data.get(); }
 
     unsigned int GetSize() const override { return m_Size; }
 
