diff options
Diffstat (limited to 'sound/isa/gus/gusextreme.c')
-rw-r--r-- | sound/isa/gus/gusextreme.c | 16 |
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 | ||
387 | static void __exit alsa_card_gusextreme_exit(void) | 385 | static void __exit alsa_card_gusextreme_exit(void) |