Messages in this thread | | | Subject | Re: [RFC/PATCH 1/3] SLAB: Add PageSlab checking to ksize() | From | Matt Mackall <> | Date | Thu, 22 May 2008 13:31:56 -0500 |
| |
On Thu, 2008-05-22 at 19:13 +0300, Pekka Enberg wrote: > Hi Matt, > > On Thu, May 22, 2008 at 6:01 PM, Matt Mackall <mpm@selenic.com> wrote: > > As I've said several times, ksize() on kmem_cache_alloced objects > > -cannot work- on SLOB. Calling ksize() on something returned by > > kmem_cache_alloc is a categorical error. > > Well, it's a historical fact that ksize() worked for both kmalloc() > and kmem_cache_alloc() (see the kernedoc comment in mm/slab.c).
Indeed. It looks like it was in fact introduced for nommu (back in 2.5.47). But much like kfree(kmem_cache_alloc()) is a bogus thing to do, ksize(kmem_cache_alloc()) is assuming too much about the relationship between kmalloc and kmem_cache_alloc.
Nommu's accounting code makes two misguided assumptions a) that we can determine how/whether something was allocated just from a pointer b) that the size of that object can be determined dynamically in any case other than kmalloc. But it really shouldn't need to do either of these.
> However, I think we should just look at getting rid of ksize() > altogether as it's only (ab)used by the nommu code and few call-sites > that open-code krealloc().
Right.
-- Mathematics is the supreme nostalgia of our time.
| |