aboutsummaryrefslogtreecommitdiffstats
path: root/sound/isa/gus/gusextreme.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/isa/gus/gusextreme.c')
-rw-r--r--sound/isa/gus/gusextreme.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/sound/isa/gus/gusextreme.c b/sound/isa/gus/gusextreme.c
index 31dc20501d0c..05852fcc613b 100644
--- a/sound/isa/gus/gusextreme.c
+++ b/sound/isa/gus/gusextreme.c
@@ -363,9 +363,11 @@ static int __init alsa_card_gusextreme_init(void)
363 continue; 363 continue;
364 device = platform_device_register_simple(GUSEXTREME_DRIVER, 364 device = platform_device_register_simple(GUSEXTREME_DRIVER,
365 i, NULL, 0); 365 i, NULL, 0);
366 if (IS_ERR(device)) { 366 if (IS_ERR(device))
367 err = PTR_ERR(device); 367 continue;
368 goto errout; 368 if (!platform_get_drvdata(device)) {
369 platform_device_unregister(device);
370 continue;
369 } 371 }
370 devices[i] = device; 372 devices[i] = device;
371 cards++; 373 cards++;
@@ -374,14 +376,10 @@ static int __init alsa_card_gusextreme_init(void)
374#ifdef MODULE 376#ifdef MODULE
375 printk(KERN_ERR "GUS Extreme soundcard not found or device busy\n"); 377 printk(KERN_ERR "GUS Extreme soundcard not found or device busy\n");
376#endif 378#endif
377 err = -ENODEV; 379 snd_gusextreme_unregister_all();
378 goto errout; 380 return -ENODEV;
379 } 381 }
380 return 0; 382 return 0;
381
382 errout:
383 snd_gusextreme_unregister_all();
384 return err;
385} 383}
386 384
387static void __exit alsa_card_gusextreme_exit(void) 385static void __exit alsa_card_gusextreme_exit(void)