updater: Fix lost capabilities of set_metadata
This was broken since Android O. During a file-based incremental OTA,
capability flags were cleared but not being set again properly, leading
some critical processes (e.g. surfaceflinger and pm-service) fails.
For more details, see: https://android.googlesource.com/platform/system/core/+/65b8d749f71d7962831e87600dd6137566c3c281
Change-Id: I20e616cd83ec1cd1b79717a6703919316ad77938
diff --git a/updater/install.cpp b/updater/install.cpp
index dfc31da..93c8904 100644
--- a/updater/install.cpp
+++ b/updater/install.cpp
@@ -901,7 +901,7 @@
} else {
struct vfs_cap_data cap_data;
memset(&cap_data, 0, sizeof(cap_data));
- cap_data.magic_etc = VFS_CAP_REVISION | VFS_CAP_FLAGS_EFFECTIVE;
+ cap_data.magic_etc = VFS_CAP_REVISION_2 | VFS_CAP_FLAGS_EFFECTIVE;
cap_data.data[0].permitted = (uint32_t)(parsed.capabilities & 0xffffffff);
cap_data.data[0].inheritable = 0;
cap_data.data[1].permitted = (uint32_t)(parsed.capabilities >> 32);