Merge "platform: msm_shared: invalidate cache before freeing smd entries"
diff --git a/platform/msm_shared/smd.c b/platform/msm_shared/smd.c
index e78b2d4..6ead08e 100644
--- a/platform/msm_shared/smd.c
+++ b/platform/msm_shared/smd.c
@@ -416,6 +416,15 @@
smd_state_update(ch, flag);
}
+static void flush_smd_channel_entries()
+{
+ int i = 0;
+ for(i = 0; i< SMEM_NUM_SMD_STREAM_CHANNELS; i++)
+ {
+ arch_invalidate_cache_range((addr_t)&smd_channel_alloc_entry[i],
+ sizeof(smd_channel_alloc_entry_t));
+ }
+}
enum handler_return smd_irq_handler(void* data)
{
@@ -423,6 +432,7 @@
if(ch->current_state == SMD_SS_CLOSED)
{
+ flush_smd_channel_entries();
free(smd_channel_alloc_entry);
event_signal(&smd_closed, false);
return INT_NO_RESCHEDULE;