X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fdevres.c;h=eb38849aa71702445e7e8e42744ad384fe512f48;hb=5a84d159061d914c8dd4aa372ac6e9529c2be453;hp=2a668dd7cac7cb81e6cc44e1ebe61e12225e3934;hpb=cb18eccff48ef3986d1072964590bce6fec705fb;p=linux-2.6 diff --git a/lib/devres.c b/lib/devres.c index 2a668dd7ca..eb38849aa7 100644 --- a/lib/devres.c +++ b/lib/devres.c @@ -274,21 +274,21 @@ int pcim_iomap_regions(struct pci_dev *pdev, u16 mask, const char *name) rc = pci_request_region(pdev, i, name); if (rc) - goto err_region; + goto err_inval; rc = -ENOMEM; if (!pcim_iomap(pdev, i, 0)) - goto err_iomap; + goto err_region; } return 0; - err_iomap: - pcim_iounmap(pdev, iomap[i]); err_region: pci_release_region(pdev, i); err_inval: while (--i >= 0) { + if (!(mask & (1 << i))) + continue; pcim_iounmap(pdev, iomap[i]); pci_release_region(pdev, i); }