aboutsummaryrefslogtreecommitdiffstats
path: root/sound/isa/gus/gusclassic.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/isa/gus/gusclassic.c')
-rw-r--r--sound/isa/gus/gusclassic.c16
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
277static void __exit alsa_card_gusclassic_exit(void) 275static void __exit alsa_card_gusclassic_exit(void)