HomePhabricator

[scudo][standalone] Correct min/max region indices

Authored by cryptoad on Nov 9 2020, 3:14 PM.

Description

[scudo][standalone] Correct min/max region indices

The original code to keep track of the minimum and maximum indices
of allocated 32-bit primary regions was sketchy at best.

MinRegionIndex & MaxRegionIndex were shared between all size
classes, and could (theoretically) have been updated concurrently. This
didn't materialize anywhere I could see, but still it's not proper.

This changes those min/max indices by making them class specific rather
than global: classes are locked when growing, so there is no
concurrency there. This also allows to simplify some of the 32-bit
release code, that now doesn't have to go through all the regions to
get the proper min/max. Iterate and unmap will no longer have access to
the global min/max, but they aren't used as much so this is fine.

Differential Revision: https://reviews.llvm.org/D91106

Details

Committed
cryptoadNov 16 2020, 12:43 PM
Differential Revision
D91106: [scudo][standalone] Correct min/max region indices
Parents
rG7c62c6313bae: [mlir] Add DecomposeCallGraphTypes pass.
Branches
Unknown
Tags
Unknown