diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-03-17 11:21:20 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-03-17 11:21:20 -0400 |
commit | 47239561e39bceefecc3cd67f71fcf86a198a8ff (patch) | |
tree | 9823d0973494ea8acabb744bc3aba42b610fb434 /lib/bitmap.c | |
parent | ed681a91ab805341675d166a9592551093c0a2d9 (diff) | |
parent | 5bee17f18b595937e6beafeee5197868a3f74a06 (diff) |
Merge branch 'linus' into core/printk
Diffstat (limited to 'lib/bitmap.c')
-rw-r--r-- | lib/bitmap.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/lib/bitmap.c b/lib/bitmap.c index 1338469ac849..35a1f7ff4149 100644 --- a/lib/bitmap.c +++ b/lib/bitmap.c | |||
@@ -948,15 +948,15 @@ done: | |||
948 | */ | 948 | */ |
949 | int bitmap_find_free_region(unsigned long *bitmap, int bits, int order) | 949 | int bitmap_find_free_region(unsigned long *bitmap, int bits, int order) |
950 | { | 950 | { |
951 | int pos; /* scans bitmap by regions of size order */ | 951 | int pos, end; /* scans bitmap by regions of size order */ |
952 | 952 | ||
953 | for (pos = 0; pos < bits; pos += (1 << order)) | 953 | for (pos = 0 ; (end = pos + (1 << order)) <= bits; pos = end) { |
954 | if (__reg_op(bitmap, pos, order, REG_OP_ISFREE)) | 954 | if (!__reg_op(bitmap, pos, order, REG_OP_ISFREE)) |
955 | break; | 955 | continue; |
956 | if (pos == bits) | 956 | __reg_op(bitmap, pos, order, REG_OP_ALLOC); |
957 | return -ENOMEM; | 957 | return pos; |
958 | __reg_op(bitmap, pos, order, REG_OP_ALLOC); | 958 | } |
959 | return pos; | 959 | return -ENOMEM; |
960 | } | 960 | } |
961 | EXPORT_SYMBOL(bitmap_find_free_region); | 961 | EXPORT_SYMBOL(bitmap_find_free_region); |
962 | 962 | ||