X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=kernel%2Fresource.c;h=ded9cf87d6037a832efefacdb80837bb0f1ec9e5;hb=refs%2Fheads%2Faccepted%2Ftizen_unified_x;hp=b1763b2fd7ef3eea71481ed982b9ae81e69675b0;hpb=c0927a7a5391f7d8e593e5e50ead7505a23cadf9;p=platform%2Fkernel%2Flinux-rpi.git diff --git a/kernel/resource.c b/kernel/resource.c index b1763b2..ded9cf8 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -200,6 +200,12 @@ static int __release_resource(struct resource *old, bool release_child) { struct resource *tmp, **p, *chd; + if (!old->parent) { + WARN(old->sibling, "sibling but no parent"); + if (old->sibling) + return -EINVAL; + return 0; + } p = &old->parent->child; for (;;) { tmp = *p; @@ -1847,8 +1853,8 @@ get_free_mem_region(struct device *dev, struct resource *base, write_lock(&resource_lock); for (addr = gfr_start(base, size, align, flags); - gfr_continue(base, addr, size, flags); - addr = gfr_next(addr, size, flags)) { + gfr_continue(base, addr, align, flags); + addr = gfr_next(addr, align, flags)) { if (__region_intersects(base, addr, size, 0, IORES_DESC_NONE) != REGION_DISJOINT) continue;