merge in oc-release history after reset to a523b4ac387adbb4ffc7c86699461fbdea4c17f8
diff --git a/bootloader_message/bootloader_message.cpp b/bootloader_message/bootloader_message.cpp
index d8086be..b873d3d 100644
--- a/bootloader_message/bootloader_message.cpp
+++ b/bootloader_message/bootloader_message.cpp
@@ -29,14 +29,27 @@
 #include <android-base/unique_fd.h>
 #include <fs_mgr.h>
 
+static struct fstab* read_fstab(std::string* err) {
+  std::string ro_hardware = android::base::GetProperty("ro.hardware", "");
+  if (ro_hardware.empty()) {
+    *err = "failed to get ro.hardware";
+    return nullptr;
+  }
+  // The fstab path is always "/fstab.${ro.hardware}".
+  std::string fstab_path = "/fstab." + ro_hardware;
+  struct fstab* fstab = fs_mgr_read_fstab(fstab_path.c_str());
+  if (fstab == nullptr) {
+    *err = "failed to read " + fstab_path;
+  }
+  return fstab;
+}
+
 static std::string get_misc_blk_device(std::string* err) {
-  std::unique_ptr<fstab, decltype(&fs_mgr_free_fstab)> fstab(fs_mgr_read_fstab_default(),
-                                                             fs_mgr_free_fstab);
-  if (!fstab) {
-    *err = "failed to read default fstab";
+  struct fstab* fstab = read_fstab(err);
+  if (fstab == nullptr) {
     return "";
   }
-  fstab_rec* record = fs_mgr_get_entry_for_mount_point(fstab.get(), "/misc");
+  fstab_rec* record = fs_mgr_get_entry_for_mount_point(fstab, "/misc");
   if (record == nullptr) {
     *err = "failed to find /misc partition";
     return "";
diff --git a/roots.cpp b/roots.cpp
index 5ba53c2..4a0a494 100644
--- a/roots.cpp
+++ b/roots.cpp
@@ -44,7 +44,7 @@
     int i;
     int ret;
 
-    fstab = fs_mgr_read_fstab_with_dt("/etc/recovery.fstab");
+    fstab = fs_mgr_read_fstab("/etc/recovery.fstab");
     if (!fstab) {
         LOG(ERROR) << "failed to read /etc/recovery.fstab";
         return;
diff --git a/tests/common/component_test_util.h b/tests/common/component_test_util.h
index 3fee32d..4432297 100644
--- a/tests/common/component_test_util.h
+++ b/tests/common/component_test_util.h
@@ -24,14 +24,21 @@
 
 // Check if the /misc entry exists in the fstab.
 static bool parse_misc() {
-  std::unique_ptr<fstab, decltype(&fs_mgr_free_fstab)> fstab(fs_mgr_read_fstab_default(),
-                                                             fs_mgr_free_fstab);
-  if (!fstab) {
-    GTEST_LOG_(INFO) << "Failed to read default fstab";
+  // The fstab path is "/fstab.${ro.hardware}".
+  std::string ro_hardware = android::base::GetProperty("ro.hardware", "");
+  if (ro_hardware.empty()) {
+    GTEST_LOG_(INFO) << "Failed to get ro.hardware.";
     return false;
   }
 
-  fstab_rec* record = fs_mgr_get_entry_for_mount_point(fstab.get(), "/misc");
+  std::string fstab_path = "/fstab." + ro_hardware;
+  fstab* fstab = fs_mgr_read_fstab(fstab_path.c_str());
+  if (fstab == nullptr) {
+    GTEST_LOG_(INFO) << "Failed to read " << fstab_path;
+    return false;
+  }
+
+  fstab_rec* record = fs_mgr_get_entry_for_mount_point(fstab, "/misc");
   if (record == nullptr) {
     GTEST_LOG_(INFO) << "Failed to find /misc in fstab.";
     return false;
diff --git a/uncrypt/uncrypt.cpp b/uncrypt/uncrypt.cpp
index ad3bdce..4f5b2f8 100644
--- a/uncrypt/uncrypt.cpp
+++ b/uncrypt/uncrypt.cpp
@@ -163,9 +163,20 @@
 }
 
 static struct fstab* read_fstab() {
-    fstab = fs_mgr_read_fstab_default();
+    fstab = NULL;
+
+    // The fstab path is always "/fstab.${ro.hardware}".
+    std::string ro_hardware = android::base::GetProperty("ro.hardware", "");
+    if (ro_hardware.empty()) {
+        LOG(ERROR) << "failed to get ro.hardware";
+        return NULL;
+    }
+
+    std::string fstab_path = "/fstab." + ro_hardware;
+
+    fstab = fs_mgr_read_fstab(fstab_path.c_str());
     if (!fstab) {
-        LOG(ERROR) << "failed to read default fstab";
+        LOG(ERROR) << "failed to read " << fstab_path;
         return NULL;
     }
 
diff --git a/update_verifier/Android.mk b/update_verifier/Android.mk
index c1051a5..49d19b0 100644
--- a/update_verifier/Android.mk
+++ b/update_verifier/Android.mk
@@ -32,8 +32,4 @@
 LOCAL_CFLAGS := -Werror
 LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
 
-ifeq ($(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SUPPORTS_VERITY),true)
-    LOCAL_CFLAGS += -DPRODUCT_SUPPORTS_VERITY=1
-endif
-
 include $(BUILD_EXECUTABLE)
diff --git a/update_verifier/update_verifier.cpp b/update_verifier/update_verifier.cpp
index 83b1c46..a4799cc 100644
--- a/update_verifier/update_verifier.cpp
+++ b/update_verifier/update_verifier.cpp
@@ -216,8 +216,6 @@
 
   if (is_successful == BoolResult::FALSE) {
     // The current slot has not booted successfully.
-
-#ifdef PRODUCT_SUPPORTS_VERITY
     std::string verity_mode = android::base::GetProperty("ro.boot.veritymode", "");
     if (verity_mode.empty()) {
       LOG(ERROR) << "Failed to get dm-verity mode.";
@@ -234,9 +232,6 @@
       LOG(ERROR) << "Failed to verify all blocks in care map file.";
       return -1;
     }
-#else
-    LOG(WARNING) << "dm-verity not enabled; marking without verification.";
-#endif
 
     CommandResult cr;
     module->markBootSuccessful([&cr](CommandResult result) { cr = result; });