- if (!free_slab_count) {
- /* Make sure we have enough free slab pages. */
- while (free_slab_count < SLAB_RESERVE) {
- struct slab *tslab;
- void *item;
-
- item = slab_map(slab_pagesize());
- tslab = (struct slab*)((char*)item + slab_pagesize() - sizeof(*slab));
- tslab->base = item;
- tslab->prev = free_slab_tail;
- free_slab_tail = tslab;
- if (!free_slab_head)
- free_slab_head = tslab;
- free_slab_count++;
- slab_count++;
- }
+ /* Make sure we have enough free slab pages. */
+ while (free_slab_count < SLAB_RESERVE) {
+ struct slab *tslab;
+ void *item;
+
+ item = slab_map(slab_pagesize());
+ tslab = (struct slab*)((char*)item + slab_pagesize() - sizeof(*slab));
+ tslab->base = item;
+ tslab->prev = free_slab_tail;
+ free_slab_tail = tslab;
+ if (!free_slab_head)
+ free_slab_head = tslab;
+ else
+ tslab->prev->next = tslab;
+ free_slab_count++;
+ slab_count++;