aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorRene Herman <rene.herman@keyaccess.nl>2006-04-11 08:08:33 -0400
committerJaroslav Kysela <perex@suse.cz>2006-04-12 05:55:30 -0400
commitd0ac642d76c79c5cc673c4cdfe43e926379784e1 (patch)
tree676e529b860634706ff98978d0328a71e584bc4f /sound
parent12831c15f35dcc9f55fa63d50fd4892c7c6a0a1c (diff)
[ALSA] continue on IS_ERR from platform device registration
Continue with the next one on error from device registration. This would seem the correct thing to do, even if it's not the probe() error that we're getting. Signed-off-by: Rene Herman <rene.herman@keyaccess.nl> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r--sound/isa/ad1848/ad1848.c14
-rw-r--r--sound/isa/cmi8330.c14
-rw-r--r--sound/isa/cs423x/cs4231.c14
-rw-r--r--sound/isa/cs423x/cs4236.c14
-rw-r--r--sound/isa/es1688/es1688.c14
-rw-r--r--sound/isa/es18xx.c14
-rw-r--r--sound/isa/gus/gusclassic.c14
-rw-r--r--sound/isa/gus/gusextreme.c14
-rw-r--r--sound/isa/gus/gusmax.c14
-rw-r--r--sound/isa/gus/interwave.c14
-rw-r--r--sound/isa/opl3sa2.c14
-rw-r--r--sound/isa/sb/sb16.c14
-rw-r--r--sound/isa/sb/sb8.c14
-rw-r--r--sound/isa/sgalaxy.c14
-rw-r--r--sound/isa/sscape.c14
-rw-r--r--sound/isa/wavefront/wavefront.c14
16 files changed, 64 insertions, 160 deletions
diff --git a/sound/isa/ad1848/ad1848.c b/sound/isa/ad1848/ad1848.c
index 326a057f752..1f460eb402a 100644
--- a/sound/isa/ad1848/ad1848.c
+++ b/sound/isa/ad1848/ad1848.c
@@ -193,10 +193,8 @@ static int __init alsa_card_ad1848_init(void)
193 continue; 193 continue;
194 device = platform_device_register_simple(SND_AD1848_DRIVER, 194 device = platform_device_register_simple(SND_AD1848_DRIVER,
195 i, NULL, 0); 195 i, NULL, 0);
196 if (IS_ERR(device)) { 196 if (IS_ERR(device))
197 err = PTR_ERR(device); 197 continue;
198 goto errout;
199 }
200 devices[i] = device; 198 devices[i] = device;
201 cards++; 199 cards++;
202 } 200 }
@@ -204,14 +202,10 @@ static int __init alsa_card_ad1848_init(void)
204#ifdef MODULE 202#ifdef MODULE
205 printk(KERN_ERR "AD1848 soundcard not found or device busy\n"); 203 printk(KERN_ERR "AD1848 soundcard not found or device busy\n");
206#endif 204#endif
207 err = -ENODEV; 205 snd_ad1848_unregister_all();
208 goto errout; 206 return -ENODEV;
209 } 207 }
210 return 0; 208 return 0;
211
212 errout:
213 snd_ad1848_unregister_all();
214 return err;
215} 209}
216 210
217static void __exit alsa_card_ad1848_exit(void) 211static void __exit alsa_card_ad1848_exit(void)
diff --git a/sound/isa/cmi8330.c b/sound/isa/cmi8330.c
index bc0f5ebf5d3..35780b811d1 100644
--- a/sound/isa/cmi8330.c
+++ b/sound/isa/cmi8330.c
@@ -699,10 +699,8 @@ static int __init alsa_card_cmi8330_init(void)
699 continue; 699 continue;
700 device = platform_device_register_simple(CMI8330_DRIVER, 700 device = platform_device_register_simple(CMI8330_DRIVER,
701 i, NULL, 0); 701 i, NULL, 0);
702 if (IS_ERR(device)) { 702 if (IS_ERR(device))
703 err = PTR_ERR(device); 703 continue;
704 goto errout;
705 }
706 platform_devices[i] = device; 704 platform_devices[i] = device;
707 cards++; 705 cards++;
708 } 706 }
@@ -719,14 +717,10 @@ static int __init alsa_card_cmi8330_init(void)
719#ifdef MODULE 717#ifdef MODULE
720 snd_printk(KERN_ERR "CMI8330 not found or device busy\n"); 718 snd_printk(KERN_ERR "CMI8330 not found or device busy\n");
721#endif 719#endif
722 err = -ENODEV; 720 snd_cmi8330_unregister_all();
723 goto errout; 721 return -ENODEV;
724 } 722 }
725 return 0; 723 return 0;
726
727 errout:
728 snd_cmi8330_unregister_all();
729 return err;
730} 724}
731 725
732static void __exit alsa_card_cmi8330_exit(void) 726static void __exit alsa_card_cmi8330_exit(void)
diff --git a/sound/isa/cs423x/cs4231.c b/sound/isa/cs423x/cs4231.c
index a30dcd96252..073dac97567 100644
--- a/sound/isa/cs423x/cs4231.c
+++ b/sound/isa/cs423x/cs4231.c
@@ -209,10 +209,8 @@ static int __init alsa_card_cs4231_init(void)
209 continue; 209 continue;
210 device = platform_device_register_simple(SND_CS4231_DRIVER, 210 device = platform_device_register_simple(SND_CS4231_DRIVER,
211 i, NULL, 0); 211 i, NULL, 0);
212 if (IS_ERR(device)) { 212 if (IS_ERR(device))
213 err = PTR_ERR(device); 213 continue;
214 goto errout;
215 }
216 devices[i] = device; 214 devices[i] = device;
217 cards++; 215 cards++;
218 } 216 }
@@ -220,14 +218,10 @@ static int __init alsa_card_cs4231_init(void)
220#ifdef MODULE 218#ifdef MODULE
221 printk(KERN_ERR "CS4231 soundcard not found or device busy\n"); 219 printk(KERN_ERR "CS4231 soundcard not found or device busy\n");
222#endif 220#endif
223 err = -ENODEV; 221 snd_cs4231_unregister_all();
224 goto errout; 222 return -ENODEV;
225 } 223 }
226 return 0; 224 return 0;
227
228 errout:
229 snd_cs4231_unregister_all();
230 return err;
231} 225}
232 226
233static void __exit alsa_card_cs4231_exit(void) 227static void __exit alsa_card_cs4231_exit(void)
diff --git a/sound/isa/cs423x/cs4236.c b/sound/isa/cs423x/cs4236.c
index 382bb17ef49..b07a62b7617 100644
--- a/sound/isa/cs423x/cs4236.c
+++ b/sound/isa/cs423x/cs4236.c
@@ -780,10 +780,8 @@ static int __init alsa_card_cs423x_init(void)
780 continue; 780 continue;
781 device = platform_device_register_simple(CS423X_DRIVER, 781 device = platform_device_register_simple(CS423X_DRIVER,
782 i, NULL, 0); 782 i, NULL, 0);
783 if (IS_ERR(device)) { 783 if (IS_ERR(device))
784 err = PTR_ERR(device); 784 continue;
785 goto errout;
786 }
787 platform_devices[i] = device; 785 platform_devices[i] = device;
788 snd_cs423x_devices++; 786 snd_cs423x_devices++;
789 } 787 }
@@ -802,14 +800,10 @@ static int __init alsa_card_cs423x_init(void)
802#ifdef MODULE 800#ifdef MODULE
803 printk(KERN_ERR IDENT " soundcard not found or device busy\n"); 801 printk(KERN_ERR IDENT " soundcard not found or device busy\n");
804#endif 802#endif
805 err = -ENODEV; 803 snd_cs423x_unregister_all();
806 goto errout; 804 return -ENODEV;
807 } 805 }
808 return 0; 806 return 0;
809
810 errout:
811 snd_cs423x_unregister_all();
812 return err;
813} 807}
814 808
815static void __exit alsa_card_cs423x_exit(void) 809static void __exit alsa_card_cs423x_exit(void)
diff --git a/sound/isa/es1688/es1688.c b/sound/isa/es1688/es1688.c
index 2b69fc82926..d83d7104958 100644
--- a/sound/isa/es1688/es1688.c
+++ b/sound/isa/es1688/es1688.c
@@ -213,10 +213,8 @@ static int __init alsa_card_es1688_init(void)
213 continue; 213 continue;
214 device = platform_device_register_simple(ES1688_DRIVER, 214 device = platform_device_register_simple(ES1688_DRIVER,
215 i, NULL, 0); 215 i, NULL, 0);
216 if (IS_ERR(device)) { 216 if (IS_ERR(device))
217 err = PTR_ERR(device); 217 continue;
218 goto errout;
219 }
220 devices[i] = device; 218 devices[i] = device;
221 cards++; 219 cards++;
222 } 220 }
@@ -224,14 +222,10 @@ static int __init alsa_card_es1688_init(void)
224#ifdef MODULE 222#ifdef MODULE
225 printk(KERN_ERR "ESS AudioDrive ES1688 soundcard not found or device busy\n"); 223 printk(KERN_ERR "ESS AudioDrive ES1688 soundcard not found or device busy\n");
226#endif 224#endif
227 err = -ENODEV; 225 snd_es1688_unregister_all();
228 goto errout; 226 return -ENODEV;
229 } 227 }
230 return 0; 228 return 0;
231
232 errout:
233 snd_es1688_unregister_all();
234 return err;
235} 229}
236 230
237static void __exit alsa_card_es1688_exit(void) 231static void __exit alsa_card_es1688_exit(void)
diff --git a/sound/isa/es18xx.c b/sound/isa/es18xx.c
index 9fbc185b4cc..0da249bcf02 100644
--- a/sound/isa/es18xx.c
+++ b/sound/isa/es18xx.c
@@ -2391,10 +2391,8 @@ static int __init alsa_card_es18xx_init(void)
2391 continue; 2391 continue;
2392 device = platform_device_register_simple(ES18XX_DRIVER, 2392 device = platform_device_register_simple(ES18XX_DRIVER,
2393 i, NULL, 0); 2393 i, NULL, 0);
2394 if (IS_ERR(device)) { 2394 if (IS_ERR(device))
2395 err = PTR_ERR(device); 2395 continue;
2396 goto errout;
2397 }
2398 platform_devices[i] = device; 2396 platform_devices[i] = device;
2399 cards++; 2397 cards++;
2400 } 2398 }
@@ -2411,14 +2409,10 @@ static int __init alsa_card_es18xx_init(void)
2411#ifdef MODULE 2409#ifdef MODULE
2412 snd_printk(KERN_ERR "ESS AudioDrive ES18xx soundcard not found or device busy\n"); 2410 snd_printk(KERN_ERR "ESS AudioDrive ES18xx soundcard not found or device busy\n");
2413#endif 2411#endif
2414 err = -ENODEV; 2412 snd_es18xx_unregister_all();
2415 goto errout; 2413 return -ENODEV;
2416 } 2414 }
2417 return 0; 2415 return 0;
2418
2419 errout:
2420 snd_es18xx_unregister_all();
2421 return err;
2422} 2416}
2423 2417
2424static void __exit alsa_card_es18xx_exit(void) 2418static void __exit alsa_card_es18xx_exit(void)
diff --git a/sound/isa/gus/gusclassic.c b/sound/isa/gus/gusclassic.c
index 26dccfea243..ed34427c49d 100644
--- a/sound/isa/gus/gusclassic.c
+++ b/sound/isa/gus/gusclassic.c
@@ -253,10 +253,8 @@ 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;
259 }
260 devices[i] = device; 258 devices[i] = device;
261 cards++; 259 cards++;
262 } 260 }
@@ -264,14 +262,10 @@ static int __init alsa_card_gusclassic_init(void)
264#ifdef MODULE 262#ifdef MODULE
265 printk(KERN_ERR "GUS Classic soundcard not found or device busy\n"); 263 printk(KERN_ERR "GUS Classic soundcard not found or device busy\n");
266#endif 264#endif
267 err = -ENODEV; 265 snd_gusclassic_unregister_all();
268 goto errout; 266 return -ENODEV;
269 } 267 }
270 return 0; 268 return 0;
271
272 errout:
273 snd_gusclassic_unregister_all();
274 return err;
275} 269}
276 270
277static void __exit alsa_card_gusclassic_exit(void) 271static void __exit alsa_card_gusclassic_exit(void)
diff --git a/sound/isa/gus/gusextreme.c b/sound/isa/gus/gusextreme.c
index 31dc20501d0..aa312dee99c 100644
--- a/sound/isa/gus/gusextreme.c
+++ b/sound/isa/gus/gusextreme.c
@@ -363,10 +363,8 @@ 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;
369 }
370 devices[i] = device; 368 devices[i] = device;
371 cards++; 369 cards++;
372 } 370 }
@@ -374,14 +372,10 @@ static int __init alsa_card_gusextreme_init(void)
374#ifdef MODULE 372#ifdef MODULE
375 printk(KERN_ERR "GUS Extreme soundcard not found or device busy\n"); 373 printk(KERN_ERR "GUS Extreme soundcard not found or device busy\n");
376#endif 374#endif
377 err = -ENODEV; 375 snd_gusextreme_unregister_all();
378 goto errout; 376 return -ENODEV;
379 } 377 }
380 return 0; 378 return 0;
381
382 errout:
383 snd_gusextreme_unregister_all();
384 return err;
385} 379}
386 380
387static void __exit alsa_card_gusextreme_exit(void) 381static void __exit alsa_card_gusextreme_exit(void)
diff --git a/sound/isa/gus/gusmax.c b/sound/isa/gus/gusmax.c
index cafb9b67fa7..a733fabf653 100644
--- a/sound/isa/gus/gusmax.c
+++ b/sound/isa/gus/gusmax.c
@@ -390,10 +390,8 @@ static int __init alsa_card_gusmax_init(void)
390 continue; 390 continue;
391 device = platform_device_register_simple(GUSMAX_DRIVER, 391 device = platform_device_register_simple(GUSMAX_DRIVER,
392 i, NULL, 0); 392 i, NULL, 0);
393 if (IS_ERR(device)) { 393 if (IS_ERR(device))
394 err = PTR_ERR(device); 394 continue;
395 goto errout;
396 }
397 devices[i] = device; 395 devices[i] = device;
398 cards++; 396 cards++;
399 } 397 }
@@ -401,14 +399,10 @@ static int __init alsa_card_gusmax_init(void)
401#ifdef MODULE 399#ifdef MODULE
402 printk(KERN_ERR "GUS MAX soundcard not found or device busy\n"); 400 printk(KERN_ERR "GUS MAX soundcard not found or device busy\n");
403#endif 401#endif
404 err = -ENODEV; 402 snd_gusmax_unregister_all();
405 goto errout; 403 return -ENODEV;
406 } 404 }
407 return 0; 405 return 0;
408
409 errout:
410 snd_gusmax_unregister_all();
411 return err;
412} 406}
413 407
414static void __exit alsa_card_gusmax_exit(void) 408static void __exit alsa_card_gusmax_exit(void)
diff --git a/sound/isa/gus/interwave.c b/sound/isa/gus/interwave.c
index de71b7a99c8..4be472ea99d 100644
--- a/sound/isa/gus/interwave.c
+++ b/sound/isa/gus/interwave.c
@@ -947,10 +947,8 @@ static int __init alsa_card_interwave_init(void)
947#endif 947#endif
948 device = platform_device_register_simple(INTERWAVE_DRIVER, 948 device = platform_device_register_simple(INTERWAVE_DRIVER,
949 i, NULL, 0); 949 i, NULL, 0);
950 if (IS_ERR(device)) { 950 if (IS_ERR(device))
951 err = PTR_ERR(device); 951 continue;
952 goto errout;
953 }
954 platform_devices[i] = device; 952 platform_devices[i] = device;
955 cards++; 953 cards++;
956 } 954 }
@@ -966,14 +964,10 @@ static int __init alsa_card_interwave_init(void)
966#ifdef MODULE 964#ifdef MODULE
967 printk(KERN_ERR "InterWave soundcard not found or device busy\n"); 965 printk(KERN_ERR "InterWave soundcard not found or device busy\n");
968#endif 966#endif
969 err = -ENODEV; 967 snd_interwave_unregister_all();
970 goto errout; 968 return -ENODEV;
971 } 969 }
972 return 0; 970 return 0;
973
974 errout:
975 snd_interwave_unregister_all();
976 return err;
977} 971}
978 972
979static void __exit alsa_card_interwave_exit(void) 973static void __exit alsa_card_interwave_exit(void)
diff --git a/sound/isa/opl3sa2.c b/sound/isa/opl3sa2.c
index c906e205d7d..02ae73ea0ba 100644
--- a/sound/isa/opl3sa2.c
+++ b/sound/isa/opl3sa2.c
@@ -962,10 +962,8 @@ static int __init alsa_card_opl3sa2_init(void)
962#endif 962#endif
963 device = platform_device_register_simple(OPL3SA2_DRIVER, 963 device = platform_device_register_simple(OPL3SA2_DRIVER,
964 i, NULL, 0); 964 i, NULL, 0);
965 if (IS_ERR(device)) { 965 if (IS_ERR(device))
966 err = PTR_ERR(device); 966 continue;
967 goto errout;
968 }
969 platform_devices[i] = device; 967 platform_devices[i] = device;
970 snd_opl3sa2_devices++; 968 snd_opl3sa2_devices++;
971 } 969 }
@@ -983,14 +981,10 @@ static int __init alsa_card_opl3sa2_init(void)
983#ifdef MODULE 981#ifdef MODULE
984 snd_printk(KERN_ERR "Yamaha OPL3-SA soundcard not found or device busy\n"); 982 snd_printk(KERN_ERR "Yamaha OPL3-SA soundcard not found or device busy\n");
985#endif 983#endif
986 err = -ENODEV; 984 snd_opl3sa2_unregister_all();
987 goto errout; 985 return -ENODEV;
988 } 986 }
989 return 0; 987 return 0;
990
991 errout:
992 snd_opl3sa2_unregister_all();
993 return err;
994} 988}
995 989
996static void __exit alsa_card_opl3sa2_exit(void) 990static void __exit alsa_card_opl3sa2_exit(void)
diff --git a/sound/isa/sb/sb16.c b/sound/isa/sb/sb16.c
index 21ea65925a9..24fa190f33a 100644
--- a/sound/isa/sb/sb16.c
+++ b/sound/isa/sb/sb16.c
@@ -720,10 +720,8 @@ static int __init alsa_card_sb16_init(void)
720 continue; 720 continue;
721 device = platform_device_register_simple(SND_SB16_DRIVER, 721 device = platform_device_register_simple(SND_SB16_DRIVER,
722 i, NULL, 0); 722 i, NULL, 0);
723 if (IS_ERR(device)) { 723 if (IS_ERR(device))
724 err = PTR_ERR(device); 724 continue;
725 goto errout;
726 }
727 platform_devices[i] = device; 725 platform_devices[i] = device;
728 cards++; 726 cards++;
729 } 727 }
@@ -745,14 +743,10 @@ static int __init alsa_card_sb16_init(void)
745 snd_printk(KERN_ERR "In case, if you have AWE card, try snd-sbawe module\n"); 743 snd_printk(KERN_ERR "In case, if you have AWE card, try snd-sbawe module\n");
746#endif 744#endif
747#endif 745#endif
748 err = -ENODEV; 746 snd_sb16_unregister_all();
749 goto errout; 747 return -ENODEV;
750 } 748 }
751 return 0; 749 return 0;
752
753 errout:
754 snd_sb16_unregister_all();
755 return err;
756} 750}
757 751
758static void __exit alsa_card_sb16_exit(void) 752static void __exit alsa_card_sb16_exit(void)
diff --git a/sound/isa/sb/sb8.c b/sound/isa/sb/sb8.c
index 3efa23d303c..f75eeb05c1f 100644
--- a/sound/isa/sb/sb8.c
+++ b/sound/isa/sb/sb8.c
@@ -264,10 +264,8 @@ 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;
270 }
271 devices[i] = device; 269 devices[i] = device;
272 cards++; 270 cards++;
273 } 271 }
@@ -275,14 +273,10 @@ static int __init alsa_card_sb8_init(void)
275#ifdef MODULE 273#ifdef MODULE
276 snd_printk(KERN_ERR "Sound Blaster soundcard not found or device busy\n"); 274 snd_printk(KERN_ERR "Sound Blaster soundcard not found or device busy\n");
277#endif 275#endif
278 err = -ENODEV; 276 snd_sb8_unregister_all();
279 goto errout; 277 return -ENODEV;
280 } 278 }
281 return 0; 279 return 0;
282
283 errout:
284 snd_sb8_unregister_all();
285 return err;
286} 280}
287 281
288static void __exit alsa_card_sb8_exit(void) 282static void __exit alsa_card_sb8_exit(void)
diff --git a/sound/isa/sgalaxy.c b/sound/isa/sgalaxy.c
index a60e66afbf9..f01a80a97ab 100644
--- a/sound/isa/sgalaxy.c
+++ b/sound/isa/sgalaxy.c
@@ -366,10 +366,8 @@ static int __init alsa_card_sgalaxy_init(void)
366 continue; 366 continue;
367 device = platform_device_register_simple(SND_SGALAXY_DRIVER, 367 device = platform_device_register_simple(SND_SGALAXY_DRIVER,
368 i, NULL, 0); 368 i, NULL, 0);
369 if (IS_ERR(device)) { 369 if (IS_ERR(device))
370 err = PTR_ERR(device); 370 continue;
371 goto errout;
372 }
373 devices[i] = device; 371 devices[i] = device;
374 cards++; 372 cards++;
375 } 373 }
@@ -377,14 +375,10 @@ static int __init alsa_card_sgalaxy_init(void)
377#ifdef MODULE 375#ifdef MODULE
378 snd_printk(KERN_ERR "Sound Galaxy soundcard not found or device busy\n"); 376 snd_printk(KERN_ERR "Sound Galaxy soundcard not found or device busy\n");
379#endif 377#endif
380 err = -ENODEV; 378 snd_sgalaxy_unregister_all();
381 goto errout; 379 return -ENODEV;
382 } 380 }
383 return 0; 381 return 0;
384
385 errout:
386 snd_sgalaxy_unregister_all();
387 return err;
388} 382}
389 383
390static void __exit alsa_card_sgalaxy_exit(void) 384static void __exit alsa_card_sgalaxy_exit(void)
diff --git a/sound/isa/sscape.c b/sound/isa/sscape.c
index 48e5552d344..532f6e0eff0 100644
--- a/sound/isa/sscape.c
+++ b/sound/isa/sscape.c
@@ -1427,8 +1427,8 @@ static int __init sscape_manual_probe(void)
1427 dma[i] == SNDRV_AUTO_DMA) { 1427 dma[i] == SNDRV_AUTO_DMA) {
1428 printk(KERN_INFO 1428 printk(KERN_INFO
1429 "sscape: insufficient parameters, need IO, IRQ, MPU-IRQ and DMA\n"); 1429 "sscape: insufficient parameters, need IO, IRQ, MPU-IRQ and DMA\n");
1430 ret = -ENXIO; 1430 sscape_unregister_all();
1431 goto errout; 1431 return -ENXIO;
1432 } 1432 }
1433 1433
1434 /* 1434 /*
@@ -1436,17 +1436,11 @@ static int __init sscape_manual_probe(void)
1436 */ 1436 */
1437 device = platform_device_register_simple(SSCAPE_DRIVER, 1437 device = platform_device_register_simple(SSCAPE_DRIVER,
1438 i, NULL, 0); 1438 i, NULL, 0);
1439 if (IS_ERR(device)) { 1439 if (IS_ERR(device))
1440 ret = PTR_ERR(device); 1440 continue;
1441 goto errout;
1442 }
1443 platform_devices[i] = device; 1441 platform_devices[i] = device;
1444 } 1442 }
1445 return 0; 1443 return 0;
1446
1447 errout:
1448 sscape_unregister_all();
1449 return ret;
1450} 1444}
1451 1445
1452static void sscape_exit(void) 1446static void sscape_exit(void)
diff --git a/sound/isa/wavefront/wavefront.c b/sound/isa/wavefront/wavefront.c
index 2f13cd5d4dc..ed9d0173e80 100644
--- a/sound/isa/wavefront/wavefront.c
+++ b/sound/isa/wavefront/wavefront.c
@@ -722,10 +722,8 @@ static int __init alsa_card_wavefront_init(void)
722#endif 722#endif
723 device = platform_device_register_simple(WAVEFRONT_DRIVER, 723 device = platform_device_register_simple(WAVEFRONT_DRIVER,
724 i, NULL, 0); 724 i, NULL, 0);
725 if (IS_ERR(device)) { 725 if (IS_ERR(device))
726 err = PTR_ERR(device); 726 continue;
727 goto errout;
728 }
729 platform_devices[i] = device; 727 platform_devices[i] = device;
730 cards++; 728 cards++;
731 } 729 }
@@ -742,14 +740,10 @@ static int __init alsa_card_wavefront_init(void)
742#ifdef MODULE 740#ifdef MODULE
743 printk (KERN_ERR "No WaveFront cards found or devices busy\n"); 741 printk (KERN_ERR "No WaveFront cards found or devices busy\n");
744#endif 742#endif
745 err = -ENODEV; 743 snd_wavefront_unregister_all();
746 goto errout; 744 return -ENODEV;
747 } 745 }
748 return 0; 746 return 0;
749
750 errout:
751 snd_wavefront_unregister_all();
752 return err;
753} 747}
754 748
755static void __exit alsa_card_wavefront_exit(void) 749static void __exit alsa_card_wavefront_exit(void)