]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - sound/core/init.c
saner FASYNC handling on file close
[linux-2.6-omap-h63xx.git] / sound / core / init.c
index 8af467df9245823a2ea5c96981e161d42ed63734..b47ff8b44be8dda901e0c88bd2c3089c2d4704ad 100644 (file)
@@ -264,8 +264,11 @@ static int snd_disconnect_release(struct inode *inode, struct file *file)
        }
        spin_unlock(&shutdown_lock);
 
-       if (likely(df))
+       if (likely(df)) {
+               if ((file->f_flags & FASYNC) && df->disconnected_f_op->fasync)
+                       df->disconnected_f_op->fasync(-1, file, 0);
                return df->disconnected_f_op->release(inode, file);
+       }
 
        panic("%s(%p, %p) failed!", __func__, inode, file);
 }
@@ -549,9 +552,9 @@ int snd_card_register(struct snd_card *card)
                return -EINVAL;
 #ifndef CONFIG_SYSFS_DEPRECATED
        if (!card->card_dev) {
-               card->card_dev = device_create_drvdata(sound_class, card->dev,
-                                                      MKDEV(0, 0), NULL,
-                                                      "card%i", card->number);
+               card->card_dev = device_create(sound_class, card->dev,
+                                              MKDEV(0, 0), NULL,
+                                              "card%i", card->number);
                if (IS_ERR(card->card_dev))
                        card->card_dev = NULL;
        }