Call getKernelLevel() only if kernel is GKI 2.0
Non-GKI or pre-S vendor wouldn't define kernel level, thus
getKernelLevel() would fail.
GKI 2.0 kernel release string format ensures getKernelLevel() to return
a valid value
https://source.android.com/devices/architecture/kernel/gki-versioning
Bug: 215380606
Test: atest vts_gki_compliance_test
Change-Id: I290d8c7a25dccacc47823c30d551ef530f70e002
diff --git a/avb/vts_gki_compliance_test.cpp b/avb/vts_gki_compliance_test.cpp
index 69b276c..2577dd5 100644
--- a/avb/vts_gki_compliance_test.cpp
+++ b/avb/vts_gki_compliance_test.cpp
@@ -435,11 +435,6 @@
runtime_info = android::vintf::VintfObject::GetRuntimeInfo();
ASSERT_NE(nullptr, runtime_info);
- std::string error_msg;
- kernel_level =
- android::vintf::VintfObject::GetInstance()->getKernelLevel(&error_msg);
- ASSERT_NE(android::vintf::Level::UNSPECIFIED, kernel_level) << error_msg;
-
product_first_api_level =
android::base::GetIntProperty("ro.product.first_api_level", 0);
ASSERT_NE(0, product_first_api_level)
@@ -466,7 +461,6 @@
}
std::shared_ptr<const android::vintf::RuntimeInfo> runtime_info;
- android::vintf::Level kernel_level;
int product_first_api_level;
};
@@ -527,6 +521,12 @@
<< runtime_info->kernelVersion();
}
+ // GKI 2.0 ensures getKernelLevel() to return valid value.
+ std::string error_msg;
+ const auto kernel_level =
+ android::vintf::VintfObject::GetInstance()->getKernelLevel(&error_msg);
+ ASSERT_NE(android::vintf::Level::UNSPECIFIED, kernel_level) << error_msg;
+
std::vector<android::fs_mgr::VBMetaData> boot_signature_images;
std::unique_ptr<GkiBootImage> boot_image =
LoadAndVerifyGkiBootImage("boot", &boot_signature_images);