diff --git a/libcutils/abi-dumps/arm64/source-based/libcutils.so.lsdump b/libcutils/abi-dumps/arm64/source-based/libcutils.so.lsdump
index 67c7514..333e61c 100644
--- a/libcutils/abi-dumps/arm64/source-based/libcutils.so.lsdump
+++ b/libcutils/abi-dumps/arm64/source-based/libcutils.so.lsdump
@@ -290,9 +290,6 @@
    "name" : "fs_write_atomic_int"
   },
   {
-   "name" : "get_fs_config"
-  },
-  {
    "name" : "hashmapCreate"
   },
   {
@@ -1277,27 +1274,6 @@
    "source_file" : "system/core/libcutils/include/cutils/fs.h"
   },
   {
-   "function_name" : "get_fs_config",
-   "linker_set_key" : "get_fs_config",
-   "parameters" :
-   [
-    {
-     "referenced_type" : "_ZTIPKc"
-    },
-    {
-     "referenced_type" : "_ZTIb"
-    },
-    {
-     "referenced_type" : "_ZTIPKc"
-    },
-    {
-     "referenced_type" : "_ZTIP9fs_config"
-    }
-   ],
-   "return_type" : "_ZTIb",
-   "source_file" : "system/core/libcutils/include/private/fs_config.h"
-  },
-  {
    "function_name" : "hashmapCreate",
    "linker_set_key" : "hashmapCreate",
    "parameters" :
@@ -2416,15 +2392,6 @@
   },
   {
    "alignment" : 8,
-   "linker_set_key" : "_ZTIP9fs_config",
-   "name" : "fs_config *",
-   "referenced_type" : "_ZTI9fs_config",
-   "self_type" : "_ZTIP9fs_config",
-   "size" : 8,
-   "source_file" : "system/core/libcutils/include/private/fs_config.h"
-  },
-  {
-   "alignment" : 8,
    "linker_set_key" : "_ZTIP9str_parms",
    "name" : "str_parms *",
    "referenced_type" : "_ZTI9str_parms",
@@ -2717,37 +2684,6 @@
    "self_type" : "_ZTI5cnode",
    "size" : 40,
    "source_file" : "system/core/libcutils/include/cutils/config_utils.h"
-  },
-  {
-   "alignment" : 8,
-   "fields" :
-   [
-    {
-     "field_name" : "uid",
-     "referenced_type" : "_ZTIj"
-    },
-    {
-     "field_name" : "gid",
-     "field_offset" : 32,
-     "referenced_type" : "_ZTIj"
-    },
-    {
-     "field_name" : "mode",
-     "field_offset" : 64,
-     "referenced_type" : "_ZTIj"
-    },
-    {
-     "field_name" : "capabilities",
-     "field_offset" : 128,
-     "referenced_type" : "_ZTIm"
-    }
-   ],
-   "linker_set_key" : "_ZTI9fs_config",
-   "name" : "fs_config",
-   "referenced_type" : "_ZTI9fs_config",
-   "self_type" : "_ZTI9fs_config",
-   "size" : 24,
-   "source_file" : "system/core/libcutils/include/private/fs_config.h"
   }
  ],
  "rvalue_reference_types" : []
diff --git a/libcutils/abi-dumps/arm_arm64/source-based/libcutils.so.lsdump b/libcutils/abi-dumps/arm_arm64/source-based/libcutils.so.lsdump
index f75240c..f612fb9 100644
--- a/libcutils/abi-dumps/arm_arm64/source-based/libcutils.so.lsdump
+++ b/libcutils/abi-dumps/arm_arm64/source-based/libcutils.so.lsdump
@@ -300,9 +300,6 @@
    "name" : "fs_write_atomic_int"
   },
   {
-   "name" : "get_fs_config"
-  },
-  {
    "name" : "hashmapCreate"
   },
   {
@@ -1287,27 +1284,6 @@
    "source_file" : "system/core/libcutils/include/cutils/fs.h"
   },
   {
-   "function_name" : "get_fs_config",
-   "linker_set_key" : "get_fs_config",
-   "parameters" :
-   [
-    {
-     "referenced_type" : "_ZTIPKc"
-    },
-    {
-     "referenced_type" : "_ZTIb"
-    },
-    {
-     "referenced_type" : "_ZTIPKc"
-    },
-    {
-     "referenced_type" : "_ZTIP9fs_config"
-    }
-   ],
-   "return_type" : "_ZTIb",
-   "source_file" : "system/core/libcutils/include/private/fs_config.h"
-  },
-  {
    "function_name" : "hashmapCreate",
    "linker_set_key" : "hashmapCreate",
    "parameters" :
@@ -2426,15 +2402,6 @@
   },
   {
    "alignment" : 4,
-   "linker_set_key" : "_ZTIP9fs_config",
-   "name" : "fs_config *",
-   "referenced_type" : "_ZTI9fs_config",
-   "self_type" : "_ZTIP9fs_config",
-   "size" : 4,
-   "source_file" : "system/core/libcutils/include/private/fs_config.h"
-  },
-  {
-   "alignment" : 4,
    "linker_set_key" : "_ZTIP9str_parms",
    "name" : "str_parms *",
    "referenced_type" : "_ZTI9str_parms",
@@ -2727,37 +2694,6 @@
    "self_type" : "_ZTI5cnode",
    "size" : 20,
    "source_file" : "system/core/libcutils/include/cutils/config_utils.h"
-  },
-  {
-   "alignment" : 8,
-   "fields" :
-   [
-    {
-     "field_name" : "uid",
-     "referenced_type" : "_ZTIj"
-    },
-    {
-     "field_name" : "gid",
-     "field_offset" : 32,
-     "referenced_type" : "_ZTIj"
-    },
-    {
-     "field_name" : "mode",
-     "field_offset" : 64,
-     "referenced_type" : "_ZTIt"
-    },
-    {
-     "field_name" : "capabilities",
-     "field_offset" : 128,
-     "referenced_type" : "_ZTIy"
-    }
-   ],
-   "linker_set_key" : "_ZTI9fs_config",
-   "name" : "fs_config",
-   "referenced_type" : "_ZTI9fs_config",
-   "self_type" : "_ZTI9fs_config",
-   "size" : 24,
-   "source_file" : "system/core/libcutils/include/private/fs_config.h"
   }
  ],
  "rvalue_reference_types" : []
diff --git a/libcutils/fs_config.cpp b/libcutils/fs_config.cpp
index 756ff8e..919be2f 100644
--- a/libcutils/fs_config.cpp
+++ b/libcutils/fs_config.cpp
@@ -91,7 +91,7 @@
     { 00751, AID_ROOT,         AID_SHELL,        0, "vendor/bin" },
     { 00751, AID_ROOT,         AID_SHELL,        0, "vendor/apex/*/bin" },
     { 00755, AID_ROOT,         AID_SHELL,        0, "vendor" },
-    {},
+    { 00755, AID_ROOT,         AID_ROOT,         0, 0 },
         // clang-format on
 };
 #ifndef __ANDROID_VNDK__
@@ -228,7 +228,7 @@
     { 00755, AID_ROOT,      AID_SHELL,     0, "vendor/bin/*" },
     { 00755, AID_ROOT,      AID_SHELL,     0, "vendor/apex/*bin/*" },
     { 00755, AID_ROOT,      AID_SHELL,     0, "vendor/xbin/*" },
-    {},
+    { 00644, AID_ROOT,      AID_ROOT,      0, 0 },
         // clang-format on
 };
 #ifndef __ANDROID_VNDK__
@@ -318,8 +318,8 @@
 auto __for_testing_only__fs_config_cmp = fs_config_cmp;
 #endif
 
-bool get_fs_config(const char* path, bool dir, const char* target_out_path,
-                   struct fs_config* fs_conf) {
+void fs_config(const char* path, int dir, const char* target_out_path, unsigned* uid, unsigned* gid,
+               unsigned* mode, uint64_t* capabilities) {
     const struct fs_path_config* pc;
     size_t which, plen;
 
@@ -362,11 +362,11 @@
             if (fs_config_cmp(dir, prefix, len, path, plen)) {
                 free(prefix);
                 close(fd);
-                fs_conf->uid = header.uid;
-                fs_conf->gid = header.gid;
-                fs_conf->mode = header.mode;
-                fs_conf->capabilities = header.capabilities;
-                return true;
+                *uid = header.uid;
+                *gid = header.gid;
+                *mode = (*mode & (~07777)) | header.mode;
+                *capabilities = header.capabilities;
+                return;
             }
             free(prefix);
         }
@@ -375,28 +375,11 @@
 
     for (pc = dir ? android_dirs : android_files; pc->prefix; pc++) {
         if (fs_config_cmp(dir, pc->prefix, strlen(pc->prefix), path, plen)) {
-            fs_conf->uid = pc->uid;
-            fs_conf->gid = pc->gid;
-            fs_conf->mode = pc->mode;
-            fs_conf->capabilities = pc->capabilities;
-            return true;
+            break;
         }
     }
-    return false;
-}
-
-void fs_config(const char* path, int dir, const char* target_out_path, unsigned* uid, unsigned* gid,
-               unsigned* mode, uint64_t* capabilities) {
-    struct fs_config conf;
-    if (get_fs_config(path, dir, target_out_path, &conf)) {
-        *uid = conf.uid;
-        *gid = conf.gid;
-        *mode = (*mode & S_IFMT) | conf.mode;
-        *capabilities = conf.capabilities;
-    } else {
-        *uid = AID_ROOT;
-        *gid = AID_ROOT;
-        *mode = (*mode & S_IFMT) | (dir ? 0755 : 0644);
-        *capabilities = 0;
-    }
+    *uid = pc->uid;
+    *gid = pc->gid;
+    *mode = (*mode & (~07777)) | pc->mode;
+    *capabilities = pc->capabilities;
 }
diff --git a/libcutils/include/private/fs_config.h b/libcutils/include/private/fs_config.h
index 9a727bc..45f46e5 100644
--- a/libcutils/include/private/fs_config.h
+++ b/libcutils/include/private/fs_config.h
@@ -21,11 +21,8 @@
 
 #pragma once
 
-#include <fcntl.h>
-#include <stdbool.h>
 #include <stdint.h>
 #include <sys/cdefs.h>
-#include <unistd.h>
 
 #include <linux/capability.h>
 
@@ -33,27 +30,17 @@
 
 __BEGIN_DECLS
 
-/* This API is deprecated. New users should call get_fs_config. */
+/*
+ * Used in:
+ *  build/tools/fs_config/fs_config.c
+ *  build/tools/fs_get_stats/fs_get_stats.c
+ *  system/extras/ext4_utils/make_ext4fs_main.c
+ *  external/squashfs-tools/squashfs-tools/android.c
+ *  system/core/cpio/mkbootfs.c
+ *  system/core/adb/file_sync_service.cpp
+ *  system/extras/ext4_utils/canned_fs_config.c
+ */
 void fs_config(const char* path, int dir, const char* target_out_path, unsigned* uid, unsigned* gid,
                unsigned* mode, uint64_t* capabilities);
 
-struct fs_config {
-  uid_t uid;
-  gid_t gid;
-  mode_t mode;
-  uint64_t capabilities;
-};
-
-/*
- * If a file system configuration was found for the specified path, store it to *conf.
- * Returns whether a file system configuration was found.
- *
- * dir: Whether path refers to a directory.
- * target_out_path: Path to the base directory to read the file system configuration from, or a null
- * pointer to use the root directory as the base. Host code should pass $ANDROID_PRODUCT_OUT or
- * equivalent, and device code should pass a null pointer.
- */
-bool get_fs_config(const char* path, bool dir, const char* target_out_path,
-                   struct fs_config* conf);
-
 __END_DECLS
