Hello. On 22-02-2011 12:21, Clemens Ladisch wrote:
From: Takashi Iwai<tiwai@xxxxxxx>
When a USB audio device is disconnected, snd_usb_audio_disconnect() kills all audio URBs. At the same time, the application, after being notified of the disconnection, might close the device, in which case ALSA calls the .hw_free callback, which should free the URBs too.
Commit de1b8b93a0ba prevented snd_usb_hw_free() from freeing the URBs to
Linus asks to also specify the commit summary in parens.
avoid a hang that resulted from this race, but this introduced another race because the URB callbacks could now be executed after snd_usb_hw_free() has returned, and try to access already freed data.
Fix the first race by introducing a mutex to serialize the disconnect callback and all PCM callbacks that manage URBs (hw_free and hw_params).
Reported-by: Pierre-Louis Bossart<pierre-louis.bossart@xxxxxxxxx> [CL: also serialize hw_params callback] Signed-off-by: Clemens Ladisch<clemens@xxxxxxxxxx>
WBR, Sergei -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html