diff --git a/fs_mgr/fs_mgr.cpp b/fs_mgr/fs_mgr.cpp index ba6b9eb14..045bb48ec 100644 --- a/fs_mgr/fs_mgr.cpp +++ b/fs_mgr/fs_mgr.cpp @@ -1602,14 +1602,6 @@ bool fs_mgr_load_verity_state(int* mode) { return true; } -std::string fs_mgr_get_verity_device_name(const FstabEntry& entry) { - if (entry.mount_point == "/") { - // In AVB, the dm device name is vroot instead of system. - return entry.fs_mgr_flags.avb ? "vroot" : "system"; - } - return Basename(entry.mount_point); -} - bool fs_mgr_is_verity_enabled(const FstabEntry& entry) { if (!entry.fs_mgr_flags.verify && !entry.fs_mgr_flags.avb) { return false; @@ -1617,7 +1609,7 @@ bool fs_mgr_is_verity_enabled(const FstabEntry& entry) { DeviceMapper& dm = DeviceMapper::Instance(); - std::string mount_point = fs_mgr_get_verity_device_name(entry); + std::string mount_point = GetVerityDeviceName(entry); if (dm.GetState(mount_point) == DmDeviceState::INVALID) { return false; } @@ -1646,7 +1638,7 @@ bool fs_mgr_verity_is_check_at_most_once(const android::fs_mgr::FstabEntry& entr } DeviceMapper& dm = DeviceMapper::Instance(); - std::string device = fs_mgr_get_verity_device_name(entry); + std::string device = GetVerityDeviceName(entry); std::vector table; if (dm.GetState(device) == DmDeviceState::INVALID || !dm.GetTableInfo(device, &table)) { diff --git a/fs_mgr/fs_mgr_fstab.cpp b/fs_mgr/fs_mgr_fstab.cpp index 2f1e41f41..f6f6f50f9 100644 --- a/fs_mgr/fs_mgr_fstab.cpp +++ b/fs_mgr/fs_mgr_fstab.cpp @@ -768,6 +768,17 @@ FstabEntry BuildGsiSystemFstabEntry() { return system; } +std::string GetVerityDeviceName(const FstabEntry& entry) { + std::string base_device; + if (entry.mount_point == "/") { + // In AVB, the dm device name is vroot instead of system. + base_device = entry.fs_mgr_flags.avb ? "vroot" : "system"; + } else { + base_device = android::base::Basename(entry.mount_point); + } + return base_device + "-verity"; +} + } // namespace fs_mgr } // namespace android diff --git a/fs_mgr/include_fstab/fstab/fstab.h b/fs_mgr/include_fstab/fstab/fstab.h index e811447a5..88da41deb 100644 --- a/fs_mgr/include_fstab/fstab/fstab.h +++ b/fs_mgr/include_fstab/fstab/fstab.h @@ -107,5 +107,10 @@ FstabEntry BuildGsiSystemFstabEntry(); std::set GetBootDevices(); +// Return the name of the dm-verity device for the given fstab entry. This does +// not check whether the device is valid or exists; it merely returns the +// expected name. +std::string GetVerityDeviceName(const FstabEntry& entry); + } // namespace fs_mgr } // namespace android diff --git a/fs_mgr/libfs_avb/avb_util.cpp b/fs_mgr/libfs_avb/avb_util.cpp index f4e4d4ee8..d9650f33e 100644 --- a/fs_mgr/libfs_avb/avb_util.cpp +++ b/fs_mgr/libfs_avb/avb_util.cpp @@ -105,14 +105,15 @@ bool HashtreeDmVeritySetup(FstabEntry* fstab_entry, const FsAvbHashtreeDescripto table.set_readonly(true); const std::string mount_point(Basename(fstab_entry->mount_point)); + const std::string device_name(GetVerityDeviceName(*fstab_entry)); android::dm::DeviceMapper& dm = android::dm::DeviceMapper::Instance(); - if (!dm.CreateDevice(mount_point, table)) { + if (!dm.CreateDevice(device_name, table)) { LERROR << "Couldn't create verity device!"; return false; } std::string dev_path; - if (!dm.GetDmDevicePathByName(mount_point, &dev_path)) { + if (!dm.GetDmDevicePathByName(device_name, &dev_path)) { LERROR << "Couldn't get verity device path!"; return false; }