Debug.isVmapStack reads kernel configs only

... but not other runtime VINTF info. This may or may
not fix the nullptr exception when accessing getRuntimeInfo().

In either case, this change should improves code health in general:
- it avoids reading things it doesn't need
- it avoids copying the map

Bug: 151092221
Test: m libandroid_runtime -j

Change-Id: I6cb9052eb56fd83ef7ee81751d9791533a36aeed
This commit is contained in:
Yifan Hong
2020-03-11 16:33:12 -07:00
parent 31c94a2f0e
commit 77c1f592fa

View File

@@ -853,8 +853,11 @@ static jboolean android_os_Debug_isVmapStack(JNIEnv *env, jobject clazz)
} cfg_state = CONFIG_UNKNOWN;
if (cfg_state == CONFIG_UNKNOWN) {
const std::map<std::string, std::string> configs =
vintf::VintfObject::GetInstance()->getRuntimeInfo()->kernelConfigs();
auto runtime_info = vintf::VintfObject::GetInstance()
->getRuntimeInfo(false /* skip cache */,
vintf::RuntimeInfo::FetchFlag::CONFIG_GZ);
CHECK(runtime_info != nullptr) << "Kernel configs cannot be fetched. b/151092221";
const std::map<std::string, std::string>& configs = runtime_info->kernelConfigs();
std::map<std::string, std::string>::const_iterator it = configs.find("CONFIG_VMAP_STACK");
cfg_state = (it != configs.end() && it->second == "y") ? CONFIG_SET : CONFIG_UNSET;
}