summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/resource.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/kernel/resource.c b/kernel/resource.c
index 09c0597840b0..96afc8027487 100644
--- a/kernel/resource.c
+++ b/kernel/resource.c
@@ -358,7 +358,7 @@ static int find_next_iomem_res(struct resource *res, char *name,
read_lock(&resource_lock);
for (p = iomem_resource.child; p; p = next_resource(p, sibling_only)) {
- if (p->flags != res->flags)
+ if ((p->flags & res->flags) != res->flags)
continue;
if (name && strcmp(p->name, name))
continue;
@@ -519,7 +519,8 @@ int region_intersects(resource_size_t start, size_t size, const char *name)
read_lock(&resource_lock);
for (p = iomem_resource.child; p ; p = p->sibling) {
- bool is_type = strcmp(p->name, name) == 0 && p->flags == flags;
+ bool is_type = strcmp(p->name, name) == 0 &&
+ ((p->flags & flags) == flags);
if (start >= p->start && start <= p->end)
is_type ? type++ : other++;
@@ -1071,7 +1072,7 @@ struct resource * __request_region(struct resource *parent,
res->name = name;
res->start = start;
res->end = start + n - 1;
- res->flags = resource_type(parent);
+ res->flags = resource_type(parent) | resource_ext_type(parent);
res->flags |= IORESOURCE_BUSY | flags;
write_lock(&resource_lock);