Samsung VZW MB1 update
/arch/arm/mach-msm/qdsp5/audio_mp3.c
blob:3498af6056a2a07d8ff7088b7d5b2e997fd7eeeb -> blob:9b3edc97cc0e0afe4e28d008bd55fc2865b30ec9
--- arch/arm/mach-msm/qdsp5/audio_mp3.c
+++ arch/arm/mach-msm/qdsp5/audio_mp3.c
@@ -2289,7 +2289,10 @@ static int audio_open(struct inode *inod
if (rc) {
MM_ERR("audmgr open failed, freeing instance \
0x%08x\n", (int)audio);
- goto err;
+ if (!(file->f_flags & O_NONBLOCK))
+ goto err;
+ else
+ goto resource_err;
}
}
@@ -2301,7 +2304,10 @@ static int audio_open(struct inode *inod
audio->module_name, (int)audio);
if (audio->pcm_feedback == TUNNEL_MODE_PLAYBACK)
audmgr_close(&audio->audmgr);
- goto err;
+ if (!(file->f_flags & O_NONBLOCK))
+ goto err;
+ else
+ goto resource_err;
}
rc = rmt_get_resource(audio);
@@ -2311,7 +2317,10 @@ static int audio_open(struct inode *inod
if (audio->pcm_feedback == TUNNEL_MODE_PLAYBACK)
audmgr_close(&audio->audmgr);
msm_adsp_put(audio->audplay);
- goto err;
+ if (!(file->f_flags & O_NONBLOCK))
+ goto err;
+ else
+ goto resource_err;
}
if (file->f_flags & O_NONBLOCK) {
@@ -2401,6 +2410,7 @@ output_buff_get_phys_error:
output_buff_alloc_error:
ion_client_destroy(client);
client_create_error:
+resource_err:
audpp_adec_free(audio->dec_id);
kfree(audio);
return rc;