diff --git a/public/perfprofd.te b/public/perfprofd.te
index eed7e5848430eb0af6f2c63a0d6d09259e5af112..f0df6a0aa89859e3923652e1f2ea8cf8b1d2ca1e 100644
--- a/public/perfprofd.te
+++ b/public/perfprofd.te
@@ -1,9 +1,12 @@
 # perfprofd - perf profile collection daemon
+type perfprofd, domain;
 type perfprofd_exec, exec_type, file_type;
 
 userdebug_or_eng(`
 
-  type perfprofd, domain, domain_deprecated, mlstrustedsubject;
+  typeattribute perfprofd domain_deprecated;
+  typeattribute perfprofd coredomain;
+  typeattribute perfprofd mlstrustedsubject;
 
   # perfprofd needs to control CPU hot-plug in order to avoid kernel
   # perfevents problems in cases where CPU goes on/off during measurement;
diff --git a/public/su.te b/public/su.te
index 8cb386d4b8127cb67f0ac2ec17e770473a49e53d..ec14dee29db6c0de66f9612d47bb5b202c780032 100644
--- a/public/su.te
+++ b/public/su.te
@@ -1,3 +1,7 @@
+# All types must be defined regardless of build variant to ensure
+# policy compilation succeeds with userdebug/user combination at boot
+type su, domain;
+
 # File types must be defined for file_contexts.
 type su_exec, exec_type, file_type;
 
@@ -5,7 +9,7 @@ userdebug_or_eng(`
   # Domain used for su processes, as well as for adbd and adb shell
   # after performing an adb root command.  The domain definition is
   # wrapped to ensure that it does not exist at all on -user builds.
-  type su, domain, mlstrustedsubject;
+  typeattribute su mlstrustedsubject;
 
   # Add su to various domains
   net_domain(su)