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.
