aboutsummaryrefslogtreecommitdiffstats
path: root/sound/isa/sb/sb8.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/isa/sb/sb8.c')
-rw-r--r--sound/isa/sb/sb8.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/sound/isa/sb/sb8.c b/sound/isa/sb/sb8.c
index 3efa23d303c3..141400c01426 100644
--- a/sound/isa/sb/sb8.c
+++ b/sound/isa/sb/sb8.c
@@ -264,9 +264,11 @@ static int __init alsa_card_sb8_init(void)
264 continue; 264 continue;
265 device = platform_device_register_simple(SND_SB8_DRIVER, 265 device = platform_device_register_simple(SND_SB8_DRIVER,
266 i, NULL, 0); 266 i, NULL, 0);
267 if (IS_ERR(device)) { 267 if (IS_ERR(device))
268 err = PTR_ERR(device); 268 continue;
269 goto errout; 269 if (!platform_get_drvdata(device)) {
270 platform_device_unregister(device);
271 continue;
270 } 272 }
271 devices[i] = device; 273 devices[i] = device;
272 cards++; 274 cards++;
@@ -275,14 +277,10 @@ static int __init alsa_card_sb8_init(void)
275#ifdef MODULE 277#ifdef MODULE
276 snd_printk(KERN_ERR "Sound Blaster soundcard not found or device busy\n"); 278 snd_printk(KERN_ERR "Sound Blaster soundcard not found or device busy\n");
277#endif 279#endif
278 err = -ENODEV; 280 snd_sb8_unregister_all();
279 goto errout; 281 return -ENODEV;
280 } 282 }
281 return 0; 283 return 0;
282
283 errout:
284 snd_sb8_unregister_all();
285 return err;
286} 284}
287 285
288static void __exit alsa_card_sb8_exit(void) 286static void __exit alsa_card_sb8_exit(void)