Merge "Fix invalid madvise() during concurrent alloc/dealloc of MemoryDealer"

This commit is contained in:
Jeff Brown 2011-12-16 14:35:16 -08:00 committed by Android (Google) Code Review
commit a621e426ff

View File

@ -180,7 +180,6 @@ Allocation::~Allocation()
/* NOTE: it's VERY important to not free allocations of size 0 because
* they're special as they don't have any record in the allocator
* and could alias some real allocation (their offset is zero). */
mDealer->deallocate(freedOffset);
// keep the size to unmap in excess
size_t pagesize = getpagesize();
@ -216,6 +215,11 @@ Allocation::~Allocation()
}
#endif
}
// This should be done after madvise(MADV_REMOVE), otherwise madvise()
// might kick out the memory region that's allocated and/or written
// right after the deallocation.
mDealer->deallocate(freedOffset);
}
}