Re: 2.5.39 kmem_cache bug

Ed Tomlinson (tomlins@cam.org)
Sun, 29 Sep 2002 07:45:20 -0400


On September 28, 2002 04:56 pm, Andrew Morton wrote:
> John Levon wrote:
> > kmem_cache_destroy() is falsely reporting
> > "kmem_cache_destroy: Can't free all objects" in 2.5.39. I have
> > verified my code was freeing all allocated items correctly.
> >
> > Reverting this chunk :
> >
> > - list_add(&slabp->list, &cachep->slabs_free);
> > +/* list_add(&slabp->list, &cachep->slabs_free);
> > */ + if
> > (unlikely(list_empty(&cachep->slabs_partial))) +
> > list_add(&slabp->list, &cachep->slabs_partial); +
> > else
> > + kmem_slab_destroy(cachep, slabp);
> >
> > and the problem goes away. I haven't investigated why.
>kmem_cache_destroy
> Thanks. That's the code which leaves one empty page available
> for new allocations rather than freeing it immediately.
>
> It's temporary. Ed, I think we can just do
>
> if (list_empty(&cachep->slabs_free))
> list_add(&slabp->list, &cachep->slabs_free);
> else
> kmem_slab_destroy(cachep, slabp);
>
> there?

Yes we can do this. I would rather fix kmem_cache_destroy though. Think that, if
we play our cards right, we can get rid of the cachep->slabs_free list with out too
much pain.

Ed

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/