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

Commit 77c1f592 authored by Yifan Hong's avatar Yifan Hong
Browse files

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
parent 31c94a2f
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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;
    }