diff --git a/src/block_allocator.c b/src/block_allocator.c
index 59f13024b88c2e166277af660d626973bc6cf21c..f59dab0e6681d10bb9ac5f32350b80efd74eb934 100644
--- a/src/block_allocator.c
+++ b/src/block_allocator.c
@@ -127,7 +127,8 @@ PMOD_EXPORT void ba_low_init_aligned(struct block_allocator * a) {
 	a->l.doffset = sizeof(struct ba_page);
     }
 
-    a->l.blocks = round_up32(a->l.blocks);
+    if (a->l.blocks & (a->l.blocks - 1))
+        a->l.blocks = round_up32(a->l.blocks);
     a->l.block_size = block_size;
     a->l.offset = block_size * (a->l.blocks-1);
 }