From: Dominik Brodowski Date: Sat, 18 Sep 2010 08:19:13 +0000 (+0200) Subject: pcmcia: preserve configuration information if request_io fails partly X-Git-Tag: v2.6.36-rc6~17^2~1 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=7cdffc86528ec9c55c83c649b6d64cadeb558136;p=~emulex%2Finfiniband.git pcmcia: preserve configuration information if request_io fails partly If pcmcia_request_io() only fails partly -- for the second of two requested resources -- preserve the configuration settings for the first one. Signed-off-by: Dominik Brodowski --- diff --git a/drivers/pcmcia/pcmcia_resource.c b/drivers/pcmcia/pcmcia_resource.c index a5c176598d9..9ba4dade69a 100644 --- a/drivers/pcmcia/pcmcia_resource.c +++ b/drivers/pcmcia/pcmcia_resource.c @@ -595,7 +595,13 @@ int pcmcia_request_io(struct pcmcia_device *p_dev) if (c->io[1].end) { ret = alloc_io_space(s, &c->io[1], p_dev->io_lines); if (ret) { + struct resource tmp = c->io[0]; + /* release the previously allocated resource */ release_io_space(s, &c->io[0]); + /* but preserve the settings, for they worked... */ + c->io[0].end = resource_size(&tmp); + c->io[0].start = tmp.start; + c->io[0].flags = tmp.flags; goto out; } } else