Inject empty <kernel> tag if missing.
assemble_vintf should infer kernel FCM version when it is
missing (for devices with target FCM version >= R), but it
only did it when an empty <kernel> tag is present. Fix by
injecting the empty kernel tag if it is not there.
Test: delete <kernel> tag from CF and m check-vintf-all
Bug: 155604363
Change-Id: I216a5de6a8613c3ca270365b9ab536f6862fc8ad
diff --git a/AssembleVintf.cpp b/AssembleVintf.cpp
index 71ea1bc..5fc6828 100644
--- a/AssembleVintf.cpp
+++ b/AssembleVintf.cpp
@@ -354,8 +354,10 @@
if (manifest->level() == Level::UNSPECIFIED) return;
// target FCM version < R: leave value untouched.
if (manifest->level() < Level::R) return;
- // No need to infer when <kernel> tag is missing.
- if (!manifest->kernel().has_value()) return;
+ // Inject empty <kernel> tag if missing.
+ if (!manifest->kernel().has_value()) {
+ manifest->device.mKernel = std::make_optional<KernelInfo>();
+ }
// Kernel FCM already set.
if (manifest->kernel()->level() != Level::UNSPECIFIED) return;