libcutils: API to disable memory mitigations

Convenience API to disable memory mitigations, where we can specify
logging and also have a single place to update once a related bug is
fixed.

Bug: 166675194
Test: use API to disable memory mitigations
Change-Id: I4a3529ea1911925c49e31cc3809c2743e401c196
This commit is contained in:
Steven Moreland 2020-10-05 23:20:11 +00:00
parent 8d96bfa9bd
commit d22659b8ea
3 changed files with 46 additions and 0 deletions

View File

@ -158,6 +158,7 @@ cc_library {
"canned_fs_config.cpp",
"iosched_policy.cpp",
"load_file.cpp",
"memory.cpp",
"native_handle.cpp",
"properties.cpp",
"record_stream.cpp",
@ -200,6 +201,9 @@ cc_library {
"uevent.cpp",
],
},
bionic: {
header_libs: ["bionic_libc_platform_headers"],
},
android_arm: {
sanitize: {

View File

@ -28,6 +28,9 @@ extern "C" {
size_t strlcpy(char *dst, const char *src, size_t size);
#endif
// Disables memory mitigations for the entire process, and logs appropriately.
void process_disable_memory_mitigations();
#ifdef __cplusplus
} // extern "C"
#endif

39
libcutils/memory.cpp Normal file
View File

@ -0,0 +1,39 @@
/*
* Copyright (C) 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <cutils/memory.h>
#include <log/log.h>
#ifdef __BIONIC__
#include <bionic/malloc.h>
#endif
void process_disable_memory_mitigations() {
bool success = false;
#ifdef __BIONIC__
// TODO(b/158870657) is fixed and scudo is used globally, we can assert when an
// an error is returned.
success = android_mallopt(M_DISABLE_MEMORY_MITIGATIONS, nullptr, 0);
#endif
if (success) {
ALOGI("Disabled memory mitigations for process.");
} else {
ALOGE("Could not disable memory mitigations for process.");
}
}