diff options
Diffstat (limited to 'sound/isa/gus/gusclassic.c')
| -rw-r--r-- | sound/isa/gus/gusclassic.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/sound/isa/gus/gusclassic.c b/sound/isa/gus/gusclassic.c index 26dccfea2437..37057a37dc30 100644 --- a/sound/isa/gus/gusclassic.c +++ b/sound/isa/gus/gusclassic.c | |||
| @@ -253,9 +253,11 @@ static int __init alsa_card_gusclassic_init(void) | |||
| 253 | continue; | 253 | continue; |
| 254 | device = platform_device_register_simple(GUSCLASSIC_DRIVER, | 254 | device = platform_device_register_simple(GUSCLASSIC_DRIVER, |
| 255 | i, NULL, 0); | 255 | i, NULL, 0); |
| 256 | if (IS_ERR(device)) { | 256 | if (IS_ERR(device)) |
| 257 | err = PTR_ERR(device); | 257 | continue; |
| 258 | goto errout; | 258 | if (!platform_get_drvdata(device)) { |
| 259 | platform_device_unregister(device); | ||
| 260 | continue; | ||
| 259 | } | 261 | } |
| 260 | devices[i] = device; | 262 | devices[i] = device; |
| 261 | cards++; | 263 | cards++; |
| @@ -264,14 +266,10 @@ static int __init alsa_card_gusclassic_init(void) | |||
| 264 | #ifdef MODULE | 266 | #ifdef MODULE |
| 265 | printk(KERN_ERR "GUS Classic soundcard not found or device busy\n"); | 267 | printk(KERN_ERR "GUS Classic soundcard not found or device busy\n"); |
| 266 | #endif | 268 | #endif |
| 267 | err = -ENODEV; | 269 | snd_gusclassic_unregister_all(); |
| 268 | goto errout; | 270 | return -ENODEV; |
| 269 | } | 271 | } |
| 270 | return 0; | 272 | return 0; |
| 271 | |||
| 272 | errout: | ||
| 273 | snd_gusclassic_unregister_all(); | ||
| 274 | return err; | ||
| 275 | } | 273 | } |
| 276 | 274 | ||
| 277 | static void __exit alsa_card_gusclassic_exit(void) | 275 | static void __exit alsa_card_gusclassic_exit(void) |
