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) |