platform: msm_shared: replace memcpy in critical places
Rpm message ram memory should be read in multiples of 4bytes,
hence replaced the memcpy library function with other function
to copy 4bytes at a time.
Change-Id: I0674256a72d4dee7be95e69a822ead9584ed3e2f
diff --git a/platform/msm_shared/rpm-glink.c b/platform/msm_shared/rpm-glink.c
index 2635cd1..f564480 100644
--- a/platform/msm_shared/rpm-glink.c
+++ b/platform/msm_shared/rpm-glink.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2015-2016 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -59,6 +59,19 @@
extern glink_err_type glink_wait_link_down(glink_handle_type handle);
+static void rpmdatacpy(uint32_t * dst, uint32_t *src, uint32_t size)
+{
+ if(size%4)
+ ASSERT(0);
+ size = size/4;
+
+ while (size >0)
+ {
+ *dst++ = *src++;
+ size--;
+ }
+}
+
glink_err_type rpm_glink_send_data(uint32_t *data, uint32_t len, msg_type type)
{
rpm_req req;
@@ -198,7 +211,7 @@
return_buffer = vprovider(buffer, offset, &return_size);
if(return_buffer)
{
- memcpy(rx_buffer+offset,return_buffer, return_size);
+ rpmdatacpy((uint32_t *)(rx_buffer + offset),(uint32_t *)return_buffer, return_size);
offset += return_size;
}
} while(return_buffer);
@@ -241,7 +254,7 @@
return_buffer = vprovider(buffer, offset, &return_size);
if(return_buffer)
{
- memcpy(rx_buffer+offset,return_buffer, return_size);
+ rpmdatacpy((uint32_t *)(rx_buffer + offset),(uint32_t *)return_buffer, return_size);
offset += return_size;
}
} while(return_buffer);