struct module *module, size_t extra_size,
                      struct snd_card **card_ret);
 
-int snd_card_disconnect(struct snd_card *card);
+void snd_card_disconnect(struct snd_card *card);
 void snd_card_disconnect_sync(struct snd_card *card);
 int snd_card_free(struct snd_card *card);
 int snd_card_free_when_closed(struct snd_card *card);
 
  *  Note: The current implementation replaces all active file->f_op with special
  *        dummy file operations (they do nothing except release).
  */
-int snd_card_disconnect(struct snd_card *card)
+void snd_card_disconnect(struct snd_card *card)
 {
        struct snd_monitor_file *mfile;
 
        if (!card)
-               return -EINVAL;
+               return;
 
        spin_lock(&card->files_lock);
        if (card->shutdown) {
                spin_unlock(&card->files_lock);
-               return 0;
+               return;
        }
        card->shutdown = 1;
 
        wake_up(&card->power_sleep);
        snd_power_sync_ref(card);
 #endif
-       return 0;       
 }
 EXPORT_SYMBOL(snd_card_disconnect);
 
  */
 void snd_card_disconnect_sync(struct snd_card *card)
 {
-       int err;
-
-       err = snd_card_disconnect(card);
-       if (err < 0) {
-               dev_err(card->dev,
-                       "snd_card_disconnect error (%d), skipping sync\n",
-                       err);
-               return;
-       }
+       snd_card_disconnect(card);
 
        spin_lock_irq(&card->files_lock);
        wait_event_lock_irq(card->remove_sleep,
  */
 int snd_card_free_when_closed(struct snd_card *card)
 {
-       int ret = snd_card_disconnect(card);
-       if (ret)
-               return ret;
+       if (!card)
+               return -EINVAL;
+
+       snd_card_disconnect(card);
        put_device(&card->card_dev);
        return 0;
 }