Merge "hal: Fix for memory corruption during Sub System Restart"
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 241c7cd..a752f80 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -3099,20 +3099,21 @@
static void close_compress_sessions(struct audio_device *adev)
{
struct stream_out *out;
- struct listnode *node;
+ struct listnode *node, *tempnode;
struct audio_usecase *usecase;
pthread_mutex_lock(&adev->lock);
- list_for_each(node, &adev->usecase_list) {
+
+ list_for_each_safe(node, tempnode, &adev->usecase_list) {
usecase = node_to_item(node, struct audio_usecase, list);
- if (usecase && is_offload_usecase(usecase->id)) {
- if (usecase && usecase->stream.out) {
+ if (is_offload_usecase(usecase->id)) {
+ if (usecase->stream.out) {
ALOGI(" %s closing compress session %d on OFFLINE state", __func__, usecase->id);
out = usecase->stream.out;
pthread_mutex_unlock(&adev->lock);
out_standby(&out->stream.common);
pthread_mutex_lock(&adev->lock);
}
- }
+ }
}
pthread_mutex_unlock(&adev->lock);
}