|
@@ -2912,19 +2912,15 @@ static inline int slab_order(int size, int min_objects,
|
|
|
if (order_objects(min_order, size, reserved) > MAX_OBJS_PER_PAGE)
|
|
|
return get_order(size * MAX_OBJS_PER_PAGE) - 1;
|
|
|
|
|
|
- for (order = max(min_order, get_order(min_objects * size));
|
|
|
+ for (order = max(min_order, get_order(min_objects * size + reserved));
|
|
|
order <= max_order; order++) {
|
|
|
|
|
|
unsigned long slab_size = PAGE_SIZE << order;
|
|
|
|
|
|
- if (slab_size < min_objects * size + reserved)
|
|
|
- continue;
|
|
|
-
|
|
|
rem = (slab_size - reserved) % size;
|
|
|
|
|
|
if (rem <= slab_size / fract_leftover)
|
|
|
break;
|
|
|
-
|
|
|
}
|
|
|
|
|
|
return order;
|