aboutsummaryrefslogtreecommitdiffstats
path: root/lib/genalloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/genalloc.c')
-rw-r--r--lib/genalloc.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/genalloc.c b/lib/genalloc.c
index b41dd90..bb1d323 100644
--- a/lib/genalloc.c
+++ b/lib/genalloc.c
@@ -79,7 +79,9 @@ gen_pool_add_virt(struct gen_pool *pool, unsigned long virt, phys_addr_t phys,
size_t size, int nid)
{
struct gen_pool_chunk *chunk;
- size_t nbytes;
+ int nbits = size >> pool->min_alloc_order;
+ int nbytes = sizeof(struct gen_pool_chunk) +
+ BITS_TO_LONGS(nbits) * sizeof(long);
if (WARN_ON(!virt || virt + size < virt ||
(virt & ((1 << pool->order) - 1))))