Re: [BUG] SLOB's krealloc() seems bust

From: Peter Zijlstra
Date: Tue Oct 07 2008 - 12:11:17 EST


On Tue, 2008-10-07 at 10:00 -0500, Matt Mackall wrote:
> Give this a try, please:
>
> diff -r 5e32b09a1b2b mm/slob.c
> --- a/mm/slob.c Fri Oct 03 14:04:43 2008 -0500
> +++ b/mm/slob.c Tue Oct 07 10:00:16 2008 -0500
> @@ -515,7 +515,7 @@
>
> 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;
> }

That seems to make it work again! (4 reboots, 0 crashes)

Tested-by: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>

Thanks!

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/