git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge master.kernel.org:/home/rmk/linux-2.6-serial
[pandora-kernel.git]
/
lib
/
genalloc.c
diff --git
a/lib/genalloc.c
b/lib/genalloc.c
index
d6d30d2
..
9ce0a6a
100644
(file)
--- a/
lib/genalloc.c
+++ b/
lib/genalloc.c
@@
-95,12
+95,10
@@
unsigned long gen_pool_alloc(struct gen_pool *poolp, int size)
if (size > max_chunk_size)
return 0;
if (size > max_chunk_size)
return 0;
- i = 0;
-
size = max(size, 1 << ALLOC_MIN_SHIFT);
size = max(size, 1 << ALLOC_MIN_SHIFT);
-
s = roundup_pow_of_two(size
);
-
- j = i;
+
i = fls(size - 1
);
+ s = 1 << i;
+ j = i
-= ALLOC_MIN_SHIFT
;
spin_lock_irqsave(&poolp->lock, flags);
while (!h[j].next) {
spin_lock_irqsave(&poolp->lock, flags);
while (!h[j].next) {
@@
-153,10
+151,10
@@
void gen_pool_free(struct gen_pool *poolp, unsigned long ptr, int size)
if (size > max_chunk_size)
return;
if (size > max_chunk_size)
return;
- i = 0;
-
size = max(size, 1 << ALLOC_MIN_SHIFT);
size = max(size, 1 << ALLOC_MIN_SHIFT);
- s = roundup_pow_of_two(size);
+ i = fls(size - 1);
+ s = 1 << i;
+ i -= ALLOC_MIN_SHIFT;
a = ptr;
a = ptr;