platform: msm_shared: invalidate cache before freeing smd entries

rcm device's on 8909 stops booting after cache policy is changed to write back
due to stale data in smd channel entry. Invalidate cache before freeing
smd channel entries.

Change-Id: Ice507e7397b69b1fb405675f29a6fc264a363aa0
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;