Merge branch 'hwmon-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6
[sfrench/cifs-2.6.git] / sound / isa / cmi8330.c
index 35780b811d161e0f157e4d8cfffe2b7d479e19e2..c09a8009d2fa7230196a27fab89231dcfcc4fb7b 100644 (file)
@@ -289,6 +289,8 @@ static int __devinit snd_cmi8330_pnp(int dev, struct snd_cmi8330 *acard,
        struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL);
        int err;
 
+       if (!cfg)
+               return -ENOMEM;
        acard->cap = pnp_request_card_device(card, id->devs[0].id, NULL);
        if (acard->cap == NULL) {
                kfree(cfg);
@@ -572,7 +574,7 @@ static int __devinit snd_cmi8330_nonpnp_probe(struct platform_device *pdev)
        return 0;
 }
 
-static int snd_cmi8330_nonpnp_remove(struct platform_device *devptr)
+static int __devexit snd_cmi8330_nonpnp_remove(struct platform_device *devptr)
 {
        snd_card_free(platform_get_drvdata(devptr));
        platform_set_drvdata(devptr, NULL);
@@ -595,7 +597,7 @@ static int snd_cmi8330_nonpnp_resume(struct platform_device *dev)
 
 static struct platform_driver snd_cmi8330_driver = {
        .probe          = snd_cmi8330_nonpnp_probe,
-       .remove         = snd_cmi8330_nonpnp_remove,
+       .remove         = __devexit_p(snd_cmi8330_nonpnp_remove),
 #ifdef CONFIG_PM
        .suspend        = snd_cmi8330_nonpnp_suspend,
        .resume         = snd_cmi8330_nonpnp_resume,
@@ -701,6 +703,10 @@ static int __init alsa_card_cmi8330_init(void)
                                                         i, NULL, 0);
                if (IS_ERR(device))
                        continue;
+               if (!platform_get_drvdata(device)) {
+                       platform_device_unregister(device);
+                       continue;
+               }
                platform_devices[i] = device;
                cards++;
        }