aboutsummaryrefslogtreecommitdiffstats
path: root/lib/genalloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/genalloc.c')
-rw-r--r--lib/genalloc.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/genalloc.c b/lib/genalloc.c
index 144fe6b1a03e..ca06adc4f445 100644
--- a/lib/genalloc.c
+++ b/lib/genalloc.c
@@ -194,7 +194,7 @@ int gen_pool_add_virt(struct gen_pool *pool, unsigned long virt, phys_addr_t phy
194 chunk->phys_addr = phys; 194 chunk->phys_addr = phys;
195 chunk->start_addr = virt; 195 chunk->start_addr = virt;
196 chunk->end_addr = virt + size - 1; 196 chunk->end_addr = virt + size - 1;
197 atomic_set(&chunk->avail, size); 197 atomic_long_set(&chunk->avail, size);
198 198
199 spin_lock(&pool->lock); 199 spin_lock(&pool->lock);
200 list_add_rcu(&chunk->next_chunk, &pool->chunks); 200 list_add_rcu(&chunk->next_chunk, &pool->chunks);
@@ -304,7 +304,7 @@ unsigned long gen_pool_alloc_algo(struct gen_pool *pool, size_t size,
304 nbits = (size + (1UL << order) - 1) >> order; 304 nbits = (size + (1UL << order) - 1) >> order;
305 rcu_read_lock(); 305 rcu_read_lock();
306 list_for_each_entry_rcu(chunk, &pool->chunks, next_chunk) { 306 list_for_each_entry_rcu(chunk, &pool->chunks, next_chunk) {
307 if (size > atomic_read(&chunk->avail)) 307 if (size > atomic_long_read(&chunk->avail))
308 continue; 308 continue;
309 309
310 start_bit = 0; 310 start_bit = 0;
@@ -324,7 +324,7 @@ retry:
324 324
325 addr = chunk->start_addr + ((unsigned long)start_bit << order); 325 addr = chunk->start_addr + ((unsigned long)start_bit << order);
326 size = nbits << order; 326 size = nbits << order;
327 atomic_sub(size, &chunk->avail); 327 atomic_long_sub(size, &chunk->avail);
328 break; 328 break;
329 } 329 }
330 rcu_read_unlock(); 330 rcu_read_unlock();
@@ -390,7 +390,7 @@ void gen_pool_free(struct gen_pool *pool, unsigned long addr, size_t size)
390 remain = bitmap_clear_ll(chunk->bits, start_bit, nbits); 390 remain = bitmap_clear_ll(chunk->bits, start_bit, nbits);
391 BUG_ON(remain); 391 BUG_ON(remain);
392 size = nbits << order; 392 size = nbits << order;
393 atomic_add(size, &chunk->avail); 393 atomic_long_add(size, &chunk->avail);
394 rcu_read_unlock(); 394 rcu_read_unlock();
395 return; 395 return;
396 } 396 }
@@ -464,7 +464,7 @@ size_t gen_pool_avail(struct gen_pool *pool)
464 464
465 rcu_read_lock(); 465 rcu_read_lock();
466 list_for_each_entry_rcu(chunk, &pool->chunks, next_chunk) 466 list_for_each_entry_rcu(chunk, &pool->chunks, next_chunk)
467 avail += atomic_read(&chunk->avail); 467 avail += atomic_long_read(&chunk->avail);
468 rcu_read_unlock(); 468 rcu_read_unlock();
469 return avail; 469 return avail;
470} 470}