diff --git a/mm/slob.c b/mm/slob.c
index 4c82dd41f32eae2ff2274f3d2b1d78e8e45fbb43..62b679dc660fb9244a745142c79186000793343f 100644
--- a/mm/slob.c
+++ b/mm/slob.c
@@ -515,7 +515,7 @@ size_t ksize(const void *block)
 
 	sp = (struct slob_page *)virt_to_page(block);
 	if (slob_page(sp))
-		return ((slob_t *)block - 1)->units + SLOB_UNIT;
+		return (((slob_t *)block - 1)->units - 1) * SLOB_UNIT;
 	else
 		return sp->page.private;
 }