|
@@ -2990,6 +2990,14 @@ retry:
|
|
|
slabp = list_entry(entry, struct slab, list);
|
|
|
check_slabp(cachep, slabp);
|
|
|
check_spinlock_acquired(cachep);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * The slab was either on partial or free list so
|
|
|
+ * there must be at least one object available for
|
|
|
+ * allocation.
|
|
|
+ */
|
|
|
+ BUG_ON(slabp->inuse < 0 || slabp->inuse >= cachep->num);
|
|
|
+
|
|
|
while (slabp->inuse < cachep->num && batchcount--) {
|
|
|
STATS_INC_ALLOCED(cachep);
|
|
|
STATS_INC_ACTIVE(cachep);
|