X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=mm%2Fslob.c;h=cb675d1267914dc263100b9c4a9ea5eb20fefa48;hb=22ab019b6ff8f3f93ddc93135d7e7ff24d982fe0;hp=4c82dd41f32eae2ff2274f3d2b1d78e8e45fbb43;hpb=a12e61df4fa1cfae7a6b76976fa65a6fcb048e3f;p=linux-2.6-omap-h63xx.git diff --git a/mm/slob.c b/mm/slob.c index 4c82dd41f32..cb675d12679 100644 --- a/mm/slob.c +++ b/mm/slob.c @@ -514,9 +514,11 @@ 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; }