From 23495c9c2ef1c51181f8657df640cf2123fa6350 Mon Sep 17 00:00:00 2001 From: Deepa Madiregama Date: Wed, 3 Oct 2012 16:19:41 +0530 Subject: [PATCH] msm: audio: qdsp6v2: Fix the issue of memory unmap - Target freeze observed during monkey run. - Memory unmap getting called from interrupt context, which is causing scheduling during atomic operation. - Avoid calling memory unmap from interrupt context. (cherry picked from commit a64fae9ba272ba2f689f30bc7b33c8a1fe4445e5) Signed-off-by: Deepa Madiregama Change-Id: Iab9372ba1b2d560c7e161f39483478f0342ac30a Signed-off-by: Neha Pandey --- arch/arm/mach-msm/qdsp6v2/audio_lpa.c | 1 + arch/arm/mach-msm/qdsp6v2/audio_utils_aio.c | 1 + 2 files changed, 2 insertions(+) diff --git a/arch/arm/mach-msm/qdsp6v2/audio_lpa.c b/arch/arm/mach-msm/qdsp6v2/audio_lpa.c index 3abab01f040..31c7ad7deef 100644 --- a/arch/arm/mach-msm/qdsp6v2/audio_lpa.c +++ b/arch/arm/mach-msm/qdsp6v2/audio_lpa.c @@ -1128,6 +1128,7 @@ static int audio_release(struct inode *inode, struct file *file) audio->wflush = 0; audlpa_unmap_ion_region(audio); audio_disable(audio); + audlpa_unmap_ion_region(audio); msm_clear_session_id(audio->ac->session); auddev_unregister_evt_listner(AUDDEV_CLNT_DEC, audio->ac->session); q6asm_audio_client_free(audio->ac); diff --git a/arch/arm/mach-msm/qdsp6v2/audio_utils_aio.c b/arch/arm/mach-msm/qdsp6v2/audio_utils_aio.c index ef7d59012ef..05fdf56dd92 100644 --- a/arch/arm/mach-msm/qdsp6v2/audio_utils_aio.c +++ b/arch/arm/mach-msm/qdsp6v2/audio_utils_aio.c @@ -470,6 +470,7 @@ int audio_aio_release(struct inode *inode, struct file *file) audio->drv_ops.in_flush(audio); audio_aio_unmap_ion_region(audio); audio_aio_disable(audio); + audio_aio_unmap_ion_region(audio); audio_aio_reset_ion_region(audio); ion_client_destroy(audio->client); audio->event_abort = 1;