--- alsa-driver-hg20080516/drivers/aloop-kernel.c 2008-05-22 13:37:09.000000000 +0200 +++ alsa-driver-hg20080516.patch/drivers/aloop-kernel.c 2008-05-22 14:49:12.000000000 +0200 @@ -232,6 +232,8 @@ static void snd_card_loopback_runtime_free(struct snd_pcm_runtime *runtime) { snd_card_loopback_pcm_t *dpcm = runtime->private_data; + snd_assert(dpcm != NULL, return); + del_timer(&dpcm->timer); kfree(dpcm); } @@ -265,6 +267,9 @@ snd_card_loopback_pcm_t *dpcm = runtime->private_data; snd_card_loopback_cable_t *cable = dpcm->cable; + snd_assert(dpcm != NULL, return -EINVAL); + del_timer(&dpcm->timer); + snd_pcm_set_runtime_buffer(substream, NULL); if (SNDRV_PCM_STREAM_PLAYBACK == substream->stream) { @@ -349,6 +354,10 @@ { struct snd_pcm_runtime *runtime = substream->runtime; snd_card_loopback_pcm_t *dpcm = runtime->private_data; + + snd_assert(dpcm != NULL, return -EINVAL); + del_timer(&dpcm->timer); + if (SNDRV_PCM_STREAM_PLAYBACK == substream->stream) { dpcm->cable->playback_valid = 0; dpcm->cable->playback_running = 0;