|
@@ -328,6 +328,8 @@ int snd_timer_close(struct snd_timer_instance *timeri)
|
|
|
mutex_unlock(®ister_mutex);
|
|
|
} else {
|
|
|
timer = timeri->timer;
|
|
|
+ if (snd_BUG_ON(!timer))
|
|
|
+ goto out;
|
|
|
/* wait, until the active callback is finished */
|
|
|
spin_lock_irq(&timer->lock);
|
|
|
while (timeri->flags & SNDRV_TIMER_IFLG_CALLBACK) {
|
|
@@ -353,6 +355,7 @@ int snd_timer_close(struct snd_timer_instance *timeri)
|
|
|
}
|
|
|
mutex_unlock(®ister_mutex);
|
|
|
}
|
|
|
+ out:
|
|
|
if (timeri->private_free)
|
|
|
timeri->private_free(timeri);
|
|
|
kfree(timeri->owner);
|