diff --git a/adbd.te b/adbd.te
index 76cc4b1d5b3908ac1999cfe1d3a75150445a295b..44607c712e260e334c7e060879aa61d799973d56 100644
--- a/adbd.te
+++ b/adbd.te
@@ -22,8 +22,10 @@ allow adbd self:capability setpcap;
 # Create and use network sockets.
 net_domain(adbd)
 
-# Access /dev/android_adb.
+# Access /dev/android_adb or /dev/usb-ffs/adb/ep0
 allow adbd adb_device:chr_file rw_file_perms;
+allow adbd functionfs:dir search;
+allow adbd functionfs:file rw_file_perms;
 
 # Use a pseudo tty.
 allow adbd devpts:chr_file rw_file_perms;
diff --git a/file.te b/file.te
index 0ddf50f1f6bb394a063549a8797bae252b552a8c..af2f9583e6649c8e381259207d4c1e72284a6d94 100644
--- a/file.te
+++ b/file.te
@@ -32,6 +32,7 @@ type sdcard_internal, sdcard_type, fs_type, mlstrustedobject;
 type sdcard_external, sdcard_type, fs_type, mlstrustedobject;
 type debugfs, fs_type, mlstrustedobject;
 type pstorefs, fs_type;
+type functionfs, fs_type;
 
 # File types
 type unlabeled, file_type;
diff --git a/genfs_contexts b/genfs_contexts
index 07208f943726ec4ac1f358d6b8e57c1a5b32d55c..ec636b6e96131f2b354049c8c8afd67e7afd72e4 100644
--- a/genfs_contexts
+++ b/genfs_contexts
@@ -29,3 +29,4 @@ genfscon vfat / u:object_r:sdcard_external:s0
 genfscon debugfs / u:object_r:debugfs:s0
 genfscon fuse / u:object_r:sdcard_internal:s0
 genfscon pstore / u:object_r:pstorefs:s0
+genfscon functionfs / u:object_r:functionfs:s0