From 5e9980f59d39de9c3f6c2b6408598d14fbfbde4f Mon Sep 17 00:00:00 2001 From: Bjorn Helgaas Date: Thu, 11 Mar 2010 17:01:19 -0700 Subject: [PATCH] --- yaml --- r: 189117 b: refs/heads/master c: 966f3a7570447c5025d67a618d408e68a3ae3167 h: refs/heads/master i: 189115: a0a9dc7d08d7551b4c4ecfc6750fc7dcccdb37cb v: v3 --- [refs] | 2 +- trunk/drivers/pci/setup-res.c | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 04717b0ab983..563797d0b7d6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 66f1207bce10fd80ee8ce99b67d617644612f05e +refs/heads/master: 966f3a7570447c5025d67a618d408e68a3ae3167 diff --git a/trunk/drivers/pci/setup-res.c b/trunk/drivers/pci/setup-res.c index 7d678bb15ffb..17bed18d24ad 100644 --- a/trunk/drivers/pci/setup-res.c +++ b/trunk/drivers/pci/setup-res.c @@ -93,8 +93,7 @@ void pci_update_resource(struct pci_dev *dev, int resno) int pci_claim_resource(struct pci_dev *dev, int resource) { struct resource *res = &dev->resource[resource]; - struct resource *root; - int err; + struct resource *root, *conflict; root = pci_find_parent_resource(dev, res); if (!root) { @@ -103,12 +102,15 @@ int pci_claim_resource(struct pci_dev *dev, int resource) return -EINVAL; } - err = request_resource(root, res); - if (err) + conflict = request_resource_conflict(root, res); + if (conflict) { dev_err(&dev->dev, - "address space collision: %pR already in use\n", res); + "address space collision: %pR conflicts with %s %pR\n", + res, conflict->name, conflict); + return -EBUSY; + } - return err; + return 0; } EXPORT_SYMBOL(pci_claim_resource);