Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 683e0898 authored by Evgenii Stepanov's avatar Evgenii Stepanov Committed by android-build-merger
Browse files

Merge "[cfi] Adjust RLIMIT_AS by CFI shadow size." am: 3e834d18 am: 70b1b400

am: ed1da62e

Change-Id: I05c75903df13393149cd0c09511a8f4d6bf1fd0e
parents d1691e49 ed1da62e
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -24,6 +24,8 @@

#include "MediaUtils.h"

extern "C" size_t __cfi_shadow_size();

namespace android {

void limitProcessMemory(
@@ -62,6 +64,19 @@ void limitProcessMemory(
    if (propVal > 0 && uint64_t(propVal) <= SIZE_MAX) {
        maxMem = propVal;
    }

    // Increase by the size of the CFI shadow mapping. Most of the shadow is not
    // backed with physical pages, and it is possible for the result to be
    // higher than total physical memory. This is fine for RLIMIT_AS.
    size_t cfi_size = __cfi_shadow_size();
    if (cfi_size) {
      ALOGV("cfi shadow size: %zu", cfi_size);
      if (maxMem <= SIZE_MAX - cfi_size) {
        maxMem += cfi_size;
      } else {
        maxMem = SIZE_MAX;
      }
    }
    ALOGV("actual limit: %zu", maxMem);

    struct rlimit limit;