diff options
| author | Bjorn Helgaas <bhelgaas@google.com> | 2012-06-13 17:04:30 -0600 |
|---|---|---|
| committer | Bjorn Helgaas <bhelgaas@google.com> | 2012-06-13 17:04:30 -0600 |
| commit | 4d17e8516a0b24240cd3f5d024b2ca10cb0b5208 (patch) | |
| tree | 0b9f48d5f107dfe289f66d3f83484cae326904d8 /kernel | |
| parent | cfaf025112d3856637ff34a767ef785ef5cf2ca9 (diff) | |
| parent | 06aef8cec7563c40c7d7501d13ec1ed12f5e495b (diff) | |
Merge branch 'topic/yinghai-busn-alloc' into next
* topic/yinghai-busn-alloc: (33 commits)
PCI: hotplug: remove pci_do_scan_bus()
PCI: sgihp: use generic pci_hp_add_bridge()
PCI: ibmhp: use generic pci_hp_add_bridge()
PCI: cpqhp: use generic pci_hp_add_bridge()
PCI: shpchp: use generic pci_hp_add_bridge()
PCI: cpci_hotplug: use generic pci_hp_add_bridge()
PCI: pciehp: use generic pci_hp_add_bridge()
PCI: add generic pci_hp_add_bridge()
PCI: sgihp: register busn_res
PCI: ibmhp: register busn_res
PCI: cpqhp: register busn_res
PCI: shpchp: register busn_res
PCI: cpci_hotplug: register busn_res
PCI: insert busn_res for child bus
PCI: register busn_res for iov bus
tile/PCI: use pci_scan_root_bus instead pci_scan_bus
parisc/PCI: register busn_res for root buses
powerpc/PCI: register busn_res for root buses
sparc/PCI: register busn_res for root buses
ia64/PCI: register busn_res for root buses
...
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/resource.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/kernel/resource.c b/kernel/resource.c index e1d2b8ee76d5..dc8b47764443 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -722,14 +722,12 @@ int adjust_resource(struct resource *res, resource_size_t start, resource_size_t write_lock(&resource_lock); + if (!parent) + goto skip; + if ((start < parent->start) || (end > parent->end)) goto out; - for (tmp = res->child; tmp; tmp = tmp->sibling) { - if ((tmp->start < start) || (tmp->end > end)) - goto out; - } - if (res->sibling && (res->sibling->start <= end)) goto out; @@ -741,6 +739,11 @@ int adjust_resource(struct resource *res, resource_size_t start, resource_size_t goto out; } +skip: + for (tmp = res->child; tmp; tmp = tmp->sibling) + if ((tmp->start < start) || (tmp->end > end)) + goto out; + res->start = start; res->end = end; result = 0; |
