Re: [PATCH] nommu: fix kobjsize() for SLOB and SLUB

Paul Mundt
2008-06-02T06:53:23Z

On Mon, Jun 02, 2008 at 09:32:48AM +0300, Pekka Enberg wrote:
> On Mon, Jun 2, 2008 at 8:59 AM, Paul Mundt <lethal@linux-sh.org> wrote:
> > In the kmem_cache_alloc() case calling ksize() there is bogus, the
> > previous semantics for kobjsize() just defaulted to returning PAGE_SIZE
> > for these, since page->index was typically 0. Presently if we ksize()
> > those objects, we get bogus size results that are smaller than the
> > minimum alignment size. So we still need a way to handle that, even if
> > it's not frightfully accurate.
> >
> > If we go back and apply your PG_slab patch for SLUB + SLOB, then
> > kobjsize() can just become:
>
> What call-sites are using kmem_cache_alloc()? Can we convert them to
> kmalloc() or page_alloc()? IIRC both Christoph and Matt opposed my
> PG_slab patches.

Well, with that modified version of your patch I posted, even if your
previous PG_slab patches aren't applied, kobjsize() doesn't behave any
worse than it presently does in terms of object size accuracy.

In short: PG_slab doesn't get set and ksize() is never called, so we get
the same degree of accuracy as the existing implementation, and the
oopses get fixed (and the comments are still accurate, too!). So I think
it's worth applying. Verified on all of SLUB/SLOB/SLAB.

As for the call-site question, perhaps I'm misunderstanding your
question. alloc_vfsmnt() is the first to call kmem_cache_zalloc() during
boot-up on my system, but I'm not sure what relevance this has to
anything? Accurately measuring kmem_cache_alloc() and static allocations
is going to need quite a bit more of a re-think, but that's out of scope
for 2.6.26. Presently I'd rather have my system booting first :-)