diff options
author | Takashi Iwai <tiwai@suse.de> | 2007-06-20 06:03:09 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2007-07-20 05:11:13 -0400 |
commit | 101f6f4ba7109aafd7b3f2eafd7124f854dda451 (patch) | |
tree | c546374cd69046aedee683eb3ce7e259ee496cd8 /sound/isa | |
parent | 9a79b2274186fade17134929d4f85b70d59a3840 (diff) |
[ALSA] Fix unfreed pnp driver in opti9xx ISA driver
- Added the missing pnp_unregister_card_driver() in the case ISA PnP
isn't found, which caused an error at kobject_add with -EEXIST
Jun 11 09:07:31 rain kernel: kobject_add failed for opti9xx with -EEXIST, don't try to register things with the same name in the same directory.
Jun 11 09:07:31 rain kernel: [<c01c18fa>] kobject_shadow_add+0x12a/0x1c0
Jun 11 09:07:31 rain kernel: [<c01c1a81>] kobject_register+0x21/0x50
Jun 11 09:07:31 rain kernel: [<c01f09a2>] bus_add_driver+0x72/0x1b0
Jun 11 09:07:31 rain kernel: [<c01d3dff>] pnp_register_card_driver+0x4f/0xc0
Jun 11 09:07:31 rain kernel: [<c89bc00a>] alsa_card_opti9xx_init+0xa/0x25 [snd_opti92x_ad1848]
Jun 11 09:07:31 rain kernel: [<c0136947>] sys_init_module+0x157/0x1610
Jun 11 09:07:31 rain kernel: [<c01029b4>] syscall_call+0x7/0xb
- Fixed the probe behavior when no PnP is set up. Now it behaves
like the former version.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound/isa')
-rw-r--r-- | sound/isa/opti9xx/opti92x-ad1848.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sound/isa/opti9xx/opti92x-ad1848.c b/sound/isa/opti9xx/opti92x-ad1848.c index 60c120ffb9de..049d479ce2b3 100644 --- a/sound/isa/opti9xx/opti92x-ad1848.c +++ b/sound/isa/opti9xx/opti92x-ad1848.c | |||
@@ -1927,10 +1927,12 @@ static struct snd_card *snd_opti9xx_card_new(void) | |||
1927 | static int __devinit snd_opti9xx_isa_match(struct device *devptr, | 1927 | static int __devinit snd_opti9xx_isa_match(struct device *devptr, |
1928 | unsigned int dev) | 1928 | unsigned int dev) |
1929 | { | 1929 | { |
1930 | #ifdef CONFIG_PNP | ||
1930 | if (snd_opti9xx_pnp_is_probed) | 1931 | if (snd_opti9xx_pnp_is_probed) |
1931 | return 0; | 1932 | return 0; |
1932 | if (isapnp) | 1933 | if (isapnp) |
1933 | return 0; | 1934 | return 0; |
1935 | #endif | ||
1934 | return 1; | 1936 | return 1; |
1935 | } | 1937 | } |
1936 | 1938 | ||
@@ -2096,6 +2098,7 @@ static int __init alsa_card_opti9xx_init(void) | |||
2096 | pnp_register_card_driver(&opti9xx_pnpc_driver); | 2098 | pnp_register_card_driver(&opti9xx_pnpc_driver); |
2097 | if (snd_opti9xx_pnp_is_probed) | 2099 | if (snd_opti9xx_pnp_is_probed) |
2098 | return 0; | 2100 | return 0; |
2101 | pnp_unregister_card_driver(&opti9xx_pnpc_driver); | ||
2099 | #endif | 2102 | #endif |
2100 | return isa_register_driver(&snd_opti9xx_driver, 1); | 2103 | return isa_register_driver(&snd_opti9xx_driver, 1); |
2101 | } | 2104 | } |