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

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Nick Piggin
Date: Tuesday, October 7, 2008 - 9:22 pm

On Wednesday 08 October 2008 10:08, Matt Mackall wrote:

Right.


Yes, I came up with nearly the same patch before reading this

--- linux-2.6/mm/slob.c 2008-10-08 14:43:17.000000000 +1100
+++ suth/mm/slob.c      2008-10-08 15:11:06.000000000 +1100
@@ -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 - 1) * SLOB_UNIT;
-       else
+       if (slob_page(sp)) {
+               int align = max(ARCH_KMALLOC_MINALIGN, ARCH_SLAB_MINALIGN);
+               unsigned int *m = (unsigned int *)(block - align);
+               return *m + align;
+       } else
                return sp->page.private;
 }

However, mine is lifted directly from kfree, wheras you do something a
bit different. Hmm, ksize arguably could be used to find the underlying
allocated slab size in order to use a little bit more than we'd asked
for. So probably we should really just `return *m` (don't round up or
add any padding).



I didn't have ksize in my slob user test harness, but added a couple of
tests in there, and indeed ksize was returning complete garbage both
before and after the latest patch to slob. I'd say it was simply luck.
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[BUG] SLOB's krealloc() seems bust, Peter Zijlstra, (Tue Oct 7, 6:57 am)
Re: [BUG] SLOB's krealloc() seems bust, Christoph Lameter, (Tue Oct 7, 7:07 am)
Re: [BUG] SLOB's krealloc() seems bust, Peter Zijlstra, (Tue Oct 7, 7:13 am)
Re: [BUG] SLOB's krealloc() seems bust, Christoph Lameter, (Tue Oct 7, 7:26 am)
Re: [BUG] SLOB's krealloc() seems bust, Matt Mackall, (Tue Oct 7, 8:00 am)
Re: [BUG] SLOB's krealloc() seems bust, Christoph Lameter, (Tue Oct 7, 8:20 am)
Re: [BUG] SLOB's krealloc() seems bust, Matt Mackall, (Tue Oct 7, 8:58 am)
Re: [BUG] SLOB's krealloc() seems bust, Peter Zijlstra, (Tue Oct 7, 9:10 am)
Re: [BUG] SLOB's krealloc() seems bust, Linus Torvalds, (Tue Oct 7, 9:37 am)
Re: [BUG] SLOB's krealloc() seems bust, Matt Mackall, (Tue Oct 7, 9:37 am)
Re: [BUG] SLOB's krealloc() seems bust, Pekka Enberg, (Tue Oct 7, 9:57 am)
Re: [BUG] SLOB's krealloc() seems bust, Matt Mackall, (Tue Oct 7, 10:13 am)
Re: [BUG] SLOB's krealloc() seems bust, Pekka Enberg, (Tue Oct 7, 10:31 am)
Re: [BUG] SLOB's krealloc() seems bust, Linus Torvalds, (Tue Oct 7, 10:57 am)
Re: [BUG] SLOB's krealloc() seems bust, Peter Zijlstra, (Tue Oct 7, 11:11 am)
Re: [BUG] SLOB's krealloc() seems bust, Linus Torvalds, (Tue Oct 7, 11:18 am)
Re: [BUG] SLOB's krealloc() seems bust, Matt Mackall, (Tue Oct 7, 4:08 pm)
Re: [BUG] SLOB's krealloc() seems bust, Nick Piggin, (Tue Oct 7, 9:22 pm)
Re: [BUG] SLOB's krealloc() seems bust, Matt Mackall, (Tue Oct 7, 9:46 pm)
Re: [BUG] SLOB's krealloc() seems bust, Nick Piggin, (Tue Oct 7, 9:54 pm)
Re: [BUG] SLOB's krealloc() seems bust, Nick Piggin, (Tue Oct 7, 10:11 pm)
Re: [BUG] SLOB's krealloc() seems bust, Matt Mackall, (Tue Oct 7, 10:15 pm)
Re: [BUG] SLOB's krealloc() seems bust, Peter Zijlstra, (Tue Oct 7, 11:43 pm)
Re: [BUG] SLOB's krealloc() seems bust, Pekka Enberg, (Wed Oct 8, 12:25 am)
Re: [BUG] SLOB's krealloc() seems bust, Peter Zijlstra, (Wed Oct 8, 12:37 am)
Re: [BUG] SLOB's krealloc() seems bust, Pekka Enberg, (Wed Oct 8, 12:39 am)
Re: [BUG] SLOB's krealloc() seems bust, Matt Mackall, (Wed Oct 8, 12:51 pm)