[all-commits] [llvm/llvm-project] f0703c: [scudo][standalone] Correct min/max region indices

Kostya Kortchinsky via All-commits all-commits at lists.llvm.org
Mon Nov 16 12:43:39 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: f0703cb1b24be4f915257f91a290a3d92ac6cd4f
      https://github.com/llvm/llvm-project/commit/f0703cb1b24be4f915257f91a290a3d92ac6cd4f
  Author: Kostya Kortchinsky <kostyak at google.com>
  Date:   2020-11-16 (Mon, 16 Nov 2020)

  Changed paths:
    M compiler-rt/lib/scudo/standalone/primary32.h

  Log Message:
  -----------
  [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




More information about the All-commits mailing list