X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=sound%2Fdrivers%2Fvirmidi.c;h=46f3d34860679c677abe9ee83a32316f5005e243;hb=cab8e5c4444cb7d9b8035de5d81fbfd5284a02fa;hp=26eb2499d442667e18ff3229f07551e73606bea1;hpb=bed7a560333d40269a886c4421d4c8f964a32177;p=linux-2.6 diff --git a/sound/drivers/virmidi.c b/sound/drivers/virmidi.c index 26eb2499d4..46f3d34860 100644 --- a/sound/drivers/virmidi.c +++ b/sound/drivers/virmidi.c @@ -44,7 +44,6 @@ #include #include #include -#include #include #include #include @@ -85,7 +84,7 @@ struct snd_card_virmidi { static struct platform_device *devices[SNDRV_CARDS]; -static int __init snd_virmidi_probe(struct platform_device *devptr) +static int __devinit snd_virmidi_probe(struct platform_device *devptr) { struct snd_card *card; struct snd_card_virmidi *vmidi; @@ -129,7 +128,7 @@ static int __init snd_virmidi_probe(struct platform_device *devptr) return err; } -static int snd_virmidi_remove(struct platform_device *devptr) +static int __devexit snd_virmidi_remove(struct platform_device *devptr) { snd_card_free(platform_get_drvdata(devptr)); platform_set_drvdata(devptr, NULL); @@ -140,7 +139,7 @@ static int snd_virmidi_remove(struct platform_device *devptr) static struct platform_driver snd_virmidi_driver = { .probe = snd_virmidi_probe, - .remove = snd_virmidi_remove, + .remove = __devexit_p(snd_virmidi_remove), .driver = { .name = SND_VIRMIDI_DRIVER }, @@ -171,6 +170,10 @@ static int __init alsa_card_virmidi_init(void) i, NULL, 0); if (IS_ERR(device)) continue; + if (!platform_get_drvdata(device)) { + platform_device_unregister(device); + continue; + } devices[i] = device; cards++; }