Re: 2.6.24-rc6-mm1
From: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Date: 2008-01-10 00:55:30
Also in:
lkml
On Wed, 9 Jan 2008 10:04:42 +0100 Jarek Poplawski [off-list ref] wrote:
On Wed, Jan 09, 2008 at 08:57:53AM +0900, FUJITA Tomonori wrote: ...quoted
diff --git a/lib/iommu-helper.c b/lib/iommu-helper.c new file mode 100644 index 0000000..495575a --- /dev/null +++ b/lib/iommu-helper.c@@ -0,0 +1,80 @@ +/* + * IOMMU helper functions for the free area management + */ + +#include <linux/module.h> +#include <linux/bitops.h> + +static unsigned long find_next_zero_area(unsigned long *map, + unsigned long size, + unsigned long start, + unsigned int nr, + unsigned long align_mask) +{ + unsigned long index, end, i; +again: + index = find_next_zero_bit(map, size, start); + + /* Align allocation */ + index = (index + align_mask) & ~align_mask; + + end = index + nr; + if (end >= size) + return -1;This '>=' looks doubtful to me, e.g.: map points to 0s only, size = 64, nr = 64, we get: index = 0; end = 64; and: return -1 ?!
You are right. I did it only because I didn't want to change the original code (iommu_range_alloc in arch/powerpc/kernel/iommu.c). I thought that there might be a mysterious reason for it so I let it alone since it's tiny loss. Thanks,