diff --git a/private/adbd.te b/private/adbd.te
index 2008364288ded5ade37e9b7e3f38157d7b154fa9..d28b836f14ad69343f208b5191577ebbe4696874 100644
--- a/private/adbd.te
+++ b/private/adbd.te
@@ -3,6 +3,8 @@
 typeattribute adbd coredomain;
 typeattribute adbd mlstrustedsubject;
 
+init_daemon_domain(adbd)
+
 domain_auto_trans(adbd, shell_exec, shell)
 
 userdebug_or_eng(`
diff --git a/private/file_contexts b/private/file_contexts
index 222167b1922c1872ca85310512c4ca3ebe0ee8bc..4b9d0de88d7a74d1e6b981ed4fd532ff1123b9d5 100644
--- a/private/file_contexts
+++ b/private/file_contexts
@@ -270,6 +270,7 @@
 /system/etc/selinux/plat_sepolicy.cil       u:object_r:sepolicy_file:s0
 /system/etc/selinux/plat_and_mapping_sepolicy\.cil\.sha256 u:object_r:sepolicy_file:s0
 /system/bin/vr_hwc               u:object_r:vr_hwc_exec:s0
+/system/bin/adbd                 u:object_r:adbd_exec:s0
 
 #############################
 # Vendor files
diff --git a/private/init.te b/private/init.te
index 568e0d360eb53aa2da45e854bae7a753ab0bf5ae..726f1381c8158fcf71df8a195201b5adb03c11a7 100644
--- a/private/init.te
+++ b/private/init.te
@@ -3,11 +3,11 @@ typeattribute init coredomain;
 tmpfs_domain(init)
 
 # Transitions to seclabel processes in init.rc
-domain_trans(init, rootfs, adbd)
 domain_trans(init, rootfs, charger)
 domain_trans(init, rootfs, healthd)
 domain_trans(init, rootfs, slideshow)
 recovery_only(`
+  domain_trans(init, rootfs, adbd)
   domain_trans(init, rootfs, recovery)
 ')
 domain_trans(init, shell_exec, shell)
diff --git a/public/adbd.te b/public/adbd.te
index 7ecd045fc0a8b8942b2e49056a58c4fd6c0fa36a..95854c01e7e6bcc5635ec98fd56179f9cde63829 100644
--- a/public/adbd.te
+++ b/public/adbd.te
@@ -1,3 +1,4 @@
 # adbd seclabel is specified in init.rc since
 # it lives in the rootfs and has no unique file type.
 type adbd, domain;
+type adbd_exec, exec_type, file_type;