diff options
-rw-r--r-- | mm/slab.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -2990,6 +2990,14 @@ retry: | |||
2990 | slabp = list_entry(entry, struct slab, list); | 2990 | slabp = list_entry(entry, struct slab, list); |
2991 | check_slabp(cachep, slabp); | 2991 | check_slabp(cachep, slabp); |
2992 | check_spinlock_acquired(cachep); | 2992 | check_spinlock_acquired(cachep); |
2993 | |||
2994 | /* | ||
2995 | * The slab was either on partial or free list so | ||
2996 | * there must be at least one object available for | ||
2997 | * allocation. | ||
2998 | */ | ||
2999 | BUG_ON(slabp->inuse < 0 || slabp->inuse >= cachep->num); | ||
3000 | |||
2993 | while (slabp->inuse < cachep->num && batchcount--) { | 3001 | while (slabp->inuse < cachep->num && batchcount--) { |
2994 | STATS_INC_ALLOCED(cachep); | 3002 | STATS_INC_ALLOCED(cachep); |
2995 | STATS_INC_ACTIVE(cachep); | 3003 | STATS_INC_ACTIVE(cachep); |