diff options
Diffstat (limited to 'arch/arm/plat-omap/iovmm.c')
| -rw-r--r-- | arch/arm/plat-omap/iovmm.c | 9 | 
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/arm/plat-omap/iovmm.c b/arch/arm/plat-omap/iovmm.c index 65c6d1ff7237..e43983ba59c5 100644 --- a/arch/arm/plat-omap/iovmm.c +++ b/arch/arm/plat-omap/iovmm.c @@ -287,16 +287,19 @@ static struct iovm_struct *alloc_iovm_area(struct iommu *obj, u32 da,  	prev_end = 0;  	list_for_each_entry(tmp, &obj->mmap, list) { -		if ((prev_end <= start) && (start + bytes < tmp->da_start)) +		if (prev_end >= start) +			break; + +		if (start + bytes < tmp->da_start)  			goto found;  		if (flags & IOVMF_DA_ANON) -			start = roundup(tmp->da_end, alignement); +			start = roundup(tmp->da_end + 1, alignement);  		prev_end = tmp->da_end;  	} -	if ((start >= prev_end) && (ULONG_MAX - start >= bytes)) +	if ((start > prev_end) && (ULONG_MAX - start >= bytes))  		goto found;  	dev_dbg(obj->dev, "%s: no space to fit %08x(%x) flags: %08x\n",  | 
