Messages in this thread Patch in this message | | | Date | Thu, 13 Apr 2006 03:46:04 +0200 | From | Rene Herman <> | Subject | [ALSA STABLE 3/3] a few more -- unregister platform device again if probe was unsuccessful |
| |
Hi Takashi.
And finally, unregister on probe failure for sound/drivers, sound/arm/sa11xx-uda1341.c and sound/ppc/powermac.c.
sound/arm/sa11xx-uda1341.c | 14 +++++++++----- sound/drivers/dummy.c | 4 ++++ sound/drivers/mpu401/mpu401.c | 4 ++++ sound/drivers/mtpav.c | 14 +++++++++----- sound/drivers/serial-u16550.c | 4 ++++ sound/drivers/virmidi.c | 4 ++++ sound/ppc/powermac.c | 14 +++++++++----- 7 files changed, 43 insertions(+), 15 deletions(-)
Signed-off-by: Rene Herman <rene.herman@keyaccess.nl>
Index: local/sound/arm/sa11xx-uda1341.c =================================================================== --- local.orig/sound/arm/sa11xx-uda1341.c 2006-03-20 06:53:29.000000000 +0100 +++ local/sound/arm/sa11xx-uda1341.c 2006-04-13 03:14:49.000000000 +0200 @@ -984,11 +984,15 @@ static int __init sa11xx_uda1341_init(vo if ((err = platform_driver_register(&sa11xx_uda1341_driver)) < 0) return err; device = platform_device_register_simple(SA11XX_UDA1341_DRIVER, -1, NULL, 0); - if (IS_ERR(device)) { - platform_driver_unregister(&sa11xx_uda1341_driver); - return PTR_ERR(device); - } - return 0; + if (!IS_ERR(device)) { + if (platform_get_drvdata(device)) + return 0; + platform_device_unregister(device); + err = -ENODEV + } else + err = PTR_ERR(device); + platform_driver_unregister(&sa11xx_uda1341_driver); + return err; } static void __exit sa11xx_uda1341_exit(void) Index: local/sound/drivers/dummy.c =================================================================== --- local.orig/sound/drivers/dummy.c 2006-04-13 03:11:35.000000000 +0200 +++ local/sound/drivers/dummy.c 2006-04-13 03:14:49.000000000 +0200 @@ -677,6 +677,10 @@ static int __init alsa_card_dummy_init(v i, NULL, 0); if (IS_ERR(device)) continue; + if (!platform_get_drvdata(device)) { + platform_device_unregister(device); + continue; + } devices[i] = device; cards++; } Index: local/sound/drivers/mpu401/mpu401.c =================================================================== --- local.orig/sound/drivers/mpu401/mpu401.c 2006-04-13 03:11:35.000000000 +0200 +++ local/sound/drivers/mpu401/mpu401.c 2006-04-13 03:14:49.000000000 +0200 @@ -252,6 +252,10 @@ static int __init alsa_card_mpu401_init( i, NULL, 0); if (IS_ERR(device)) continue; + if (!platform_get_drvdata(device)) { + platform_device_unregister(device); + continue; + } platform_devices[i] = device; devices++; } Index: local/sound/drivers/mtpav.c =================================================================== --- local.orig/sound/drivers/mtpav.c 2006-03-20 06:53:29.000000000 +0100 +++ local/sound/drivers/mtpav.c 2006-04-13 03:14:49.000000000 +0200 @@ -770,11 +770,15 @@ static int __init alsa_card_mtpav_init(v return err; device = platform_device_register_simple(SND_MTPAV_DRIVER, -1, NULL, 0); - if (IS_ERR(device)) { - platform_driver_unregister(&snd_mtpav_driver); - return PTR_ERR(device); - } - return 0; + if (!IS_ERR(device)) { + if (platform_get_drvdata(device)) + return 0; + platform_device_unregister(device); + err = -ENODEV; + } else + err = PTR_ERR(device); + platform_driver_unregister(&snd_mtpav_driver); + return err; } static void __exit alsa_card_mtpav_exit(void) Index: local/sound/drivers/serial-u16550.c =================================================================== --- local.orig/sound/drivers/serial-u16550.c 2006-04-13 03:11:35.000000000 +0200 +++ local/sound/drivers/serial-u16550.c 2006-04-13 03:14:49.000000000 +0200 @@ -997,6 +997,10 @@ static int __init alsa_card_serial_init( i, NULL, 0); if (IS_ERR(device)) continue; + if (!platform_get_drvdata(device)) { + platform_device_unregister(device); + continue; + } devices[i] = device; cards++; } Index: local/sound/drivers/virmidi.c =================================================================== --- local.orig/sound/drivers/virmidi.c 2006-04-13 03:11:35.000000000 +0200 +++ local/sound/drivers/virmidi.c 2006-04-13 03:14:49.000000000 +0200 @@ -171,6 +171,10 @@ static int __init alsa_card_virmidi_init i, NULL, 0); if (IS_ERR(device)) continue; + if (!platform_get_drvdata(device)) { + platform_device_unregister(device); + continue; + } devices[i] = device; cards++; } Index: local/sound/ppc/powermac.c =================================================================== --- local.orig/sound/ppc/powermac.c 2006-03-20 06:53:29.000000000 +0100 +++ local/sound/ppc/powermac.c 2006-04-13 03:14:49.000000000 +0200 @@ -188,11 +188,15 @@ static int __init alsa_card_pmac_init(vo if ((err = platform_driver_register(&snd_pmac_driver)) < 0) return err; device = platform_device_register_simple(SND_PMAC_DRIVER, -1, NULL, 0); - if (IS_ERR(device)) { - platform_driver_unregister(&snd_pmac_driver); - return PTR_ERR(device); - } - return 0; + if (!IS_ERR(device)) { + if (platform_get_drvdata(device)) + return 0; + platform_device_unregister(device); + err = -ENODEV; + } else + err = PTR_ERR(device); + platform_driver_unregister(&snd_pmac_driver); + return err; }
| |