On Fri, Jan 12, 2018 at 8:23 PM, Timmons C. Player <
[email protected]> wrote:

> The page_range_allocator free() method neglected to subtract
> 1 from the index when checking the end of the page range in
> the _bitmap.  Fix the calculation.
>
> Note: with this change, the end index calculated by free() now
> matches the end index calculated in set_bits().
>

I'll commit because it looks reasonable, but I'm not sure I appreciate all
the finer details of this code so Pawel, can you please review this
one-line patch?

Timmons, how did you see / reproduce this bug?


>
> Signed-off-by: Timmons C. Player <[email protected]>
> ---
>  core/mempool.cc | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/core/mempool.cc b/core/mempool.cc
> index 569a0ac..e0d0867 100644
> --- a/core/mempool.cc
> +++ b/core/mempool.cc
> @@ -767,7 +767,7 @@ void page_range_allocator::free(page_range* pr)
>          pr2->size += pr->size;
>          pr = pr2;
>      }
> -    if (_bitmap[get_bitmap_idx(*pr) + pr->size / page_size]) {
> +    if (_bitmap[get_bitmap_idx(*pr) + pr->size / page_size - 1]) {
>          auto pr2 = static_cast<page_range*>(static_cast<void*>(pr) +
> pr->size);
>          remove(*pr2);
>          pr->size += pr2->size;
> --
> 2.7.4
>
> --
> You received this message because you are subscribed to the Google Groups
> "OSv Development" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to