Skip to content

Commit

Permalink
audio: Don't free hw resources until after hw backend is stopped
Browse files Browse the repository at this point in the history
When stopping an audio voice, call the audio backend's fini
method before calling audio_pcm_hw_free_resources_ rather than
afterwards. This allows backends which use helper threads (like
pulseaudio) to terminate those threads before the conv_buf or
mix_buf are freed and avoids race conditions where the helper
may access a NULL pointer or freed memory.

Cc: qemu-stable@nongnu.org
Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 1418406239-9838-1-git-send-email-peter.maydell@linaro.org
  • Loading branch information
pm215 committed Dec 22, 2014
1 parent 7e58e2a commit b28fb27
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion audio/audio_template.h
Original file line number Diff line number Diff line change
Expand Up @@ -191,9 +191,9 @@ static void glue (audio_pcm_hw_gc_, TYPE) (HW **hwp)
audio_detach_capture (hw);
#endif
QLIST_REMOVE (hw, entries);
glue (hw->pcm_ops->fini_, TYPE) (hw);
glue (s->nb_hw_voices_, TYPE) += 1;
glue (audio_pcm_hw_free_resources_ ,TYPE) (hw);
glue (hw->pcm_ops->fini_, TYPE) (hw);
g_free (hw);
*hwp = NULL;
}
Expand Down

0 comments on commit b28fb27

Please sign in to comment.