X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=mm%2Fslob.c;h=cb675d1267914dc263100b9c4a9ea5eb20fefa48;hb=1a4e4d4d2cceb72be70526a485914abd638c7de1;hp=d8fbd4d1bfa7e6fee9d538929349a0efd4740ca8;hpb=7a76d89232f20411f32e7a79ccc1e2f95e9f826b;p=linux-2.6-omap-h63xx.git diff --git a/mm/slob.c b/mm/slob.c index d8fbd4d1bfa..cb675d12679 100644 --- a/mm/slob.c +++ b/mm/slob.c @@ -514,12 +514,13 @@ size_t ksize(const void *block) return 0; sp = (struct slob_page *)virt_to_page(block); - if (slob_page(sp)) - return ((slob_t *)block - 1)->units + SLOB_UNIT; - else + if (slob_page(sp)) { + int align = max(ARCH_KMALLOC_MINALIGN, ARCH_SLAB_MINALIGN); + unsigned int *m = (unsigned int *)(block - align); + return SLOB_UNITS(*m) * SLOB_UNIT; + } else return sp->page.private; } -EXPORT_SYMBOL(ksize); struct kmem_cache { unsigned int size, align;