diff options
Diffstat (limited to 'sound/pcmcia/pdaudiocf')
-rw-r--r-- | sound/pcmcia/pdaudiocf/pdaudiocf.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sound/pcmcia/pdaudiocf/pdaudiocf.c b/sound/pcmcia/pdaudiocf/pdaudiocf.c index adfdce7499d1..1c09e5f49da8 100644 --- a/sound/pcmcia/pdaudiocf/pdaudiocf.c +++ b/sound/pcmcia/pdaudiocf/pdaudiocf.c | |||
@@ -241,12 +241,13 @@ static int pdacf_config(struct pcmcia_device *link) | |||
241 | CS_CHECK(ParseTuple, pcmcia_parse_tuple(link, &tuple, parse)); | 241 | CS_CHECK(ParseTuple, pcmcia_parse_tuple(link, &tuple, parse)); |
242 | link->conf.ConfigBase = parse->config.base; | 242 | link->conf.ConfigBase = parse->config.base; |
243 | link->conf.ConfigIndex = 0x5; | 243 | link->conf.ConfigIndex = 0x5; |
244 | kfree(parse); | ||
245 | 244 | ||
246 | CS_CHECK(RequestIO, pcmcia_request_io(link, &link->io)); | 245 | CS_CHECK(RequestIO, pcmcia_request_io(link, &link->io)); |
247 | CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); | 246 | CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); |
248 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); | 247 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); |
249 | 248 | ||
249 | kfree(parse); | ||
250 | |||
250 | if (snd_pdacf_assign_resources(pdacf, link->io.BasePort1, link->irq.AssignedIRQ) < 0) | 251 | if (snd_pdacf_assign_resources(pdacf, link->io.BasePort1, link->irq.AssignedIRQ) < 0) |
251 | goto failed; | 252 | goto failed; |
252 | 253 | ||
@@ -254,6 +255,7 @@ static int pdacf_config(struct pcmcia_device *link) | |||
254 | return 0; | 255 | return 0; |
255 | 256 | ||
256 | cs_failed: | 257 | cs_failed: |
258 | kfree(parse); | ||
257 | cs_error(link, last_fn, last_ret); | 259 | cs_error(link, last_fn, last_ret); |
258 | failed: | 260 | failed: |
259 | pcmcia_disable_device(link); | 261 | pcmcia_disable_device(link); |