]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - sound/core/oss/pcm_oss.c
ALSA: Avoid endless sleep after disconnect
[karo-tx-linux.git] / sound / core / oss / pcm_oss.c
index 23c34a02894b77831638e89a65ae17f7df607633..ea757241f47b85f55ddef3cd36ace8430582786b 100644 (file)
@@ -2441,6 +2441,10 @@ static int snd_pcm_oss_open(struct inode *inode, struct file *file)
                mutex_unlock(&pcm->open_mutex);
                schedule();
                mutex_lock(&pcm->open_mutex);
+               if (pcm->card->shutdown) {
+                       err = -ENODEV;
+                       break;
+               }
                if (signal_pending(current)) {
                        err = -ERESTARTSYS;
                        break;
@@ -2457,6 +2461,8 @@ static int snd_pcm_oss_open(struct inode *inode, struct file *file)
       __error2:
        snd_card_file_remove(pcm->card, file);
       __error1:
+       if (pcm)
+               snd_card_unref(pcm->card);
        return err;
 }