diff --git a/lib/bitmap.c b/lib/bitmap.c index a0b02974d898..8ee7d4857179 100644 --- a/lib/bitmap.c +++ b/lib/bitmap.c @@ -838,9 +838,12 @@ EXPORT_SYMBOL(bitmap_release_region); */ int bitmap_allocate_region(unsigned long *bitmap, unsigned int pos, int order) { + unsigned int len = BIT(order); + if (!__reg_op(bitmap, pos, order, REG_OP_ISFREE)) return -EBUSY; - return __reg_op(bitmap, pos, order, REG_OP_ALLOC); + bitmap_set(bitmap, pos, len); + return 0; } EXPORT_SYMBOL(bitmap_allocate_region);