diff --git a/private/compat/26.0/26.0.cil b/private/compat/26.0/26.0.cil
index c8b7a1f5a1929fc91544144548d1771b66e59ff2..085948a5675f135f834876439abfdc8f5cc06f27 100644
--- a/private/compat/26.0/26.0.cil
+++ b/private/compat/26.0/26.0.cil
@@ -279,7 +279,7 @@
 (typeattributeset incident_data_file_26_0 (incident_data_file))
 (typeattributeset incident_service_26_0 (incident_service))
 (typeattributeset init_26_0 (init))
-(typeattributeset init_exec_26_0 (init_exec))
+(typeattributeset init_exec_26_0 (init_exec watchdogd_exec))
 (typeattributeset inotify_26_0 (inotify))
 (typeattributeset input_device_26_0 (input_device))
 (typeattributeset inputflinger_26_0 (inputflinger))
diff --git a/private/compat/26.0/26.0.ignore.cil b/private/compat/26.0/26.0.ignore.cil
index f29703efddd15651533b0420ed27fb623a2aa896..daeee95bf055298b644f7bdb58626b666b99bb74 100644
--- a/private/compat/26.0/26.0.ignore.cil
+++ b/private/compat/26.0/26.0.ignore.cil
@@ -156,6 +156,7 @@
     wait_for_keymaster
     wait_for_keymaster_exec
     wait_for_keymaster_tmpfs
+    watchdogd_tmpfs
     wpantund
     wpantund_exec
     wpantund_service
diff --git a/private/compat/27.0/27.0.cil b/private/compat/27.0/27.0.cil
index d0cb9b7bbdce574c2e380b3353b403246b09b4ac..fcf4561c0bb7e65c3f9ddfeda869e4e880514ead 100644
--- a/private/compat/27.0/27.0.cil
+++ b/private/compat/27.0/27.0.cil
@@ -993,7 +993,7 @@
 (typeattributeset incident_data_file_27_0 (incident_data_file))
 (typeattributeset incident_service_27_0 (incident_service))
 (typeattributeset init_27_0 (init))
-(typeattributeset init_exec_27_0 (init_exec))
+(typeattributeset init_exec_27_0 (init_exec watchdogd_exec))
 (typeattributeset inotify_27_0 (inotify))
 (typeattributeset input_device_27_0 (input_device))
 (typeattributeset inputflinger_27_0 (inputflinger))
diff --git a/private/compat/27.0/27.0.ignore.cil b/private/compat/27.0/27.0.ignore.cil
index ad986fce1ec1cccadf94e2d57e83cb3208d33c73..f99f9a7cfeaaaecbcfcdf9adcd1d343334cb11a0 100644
--- a/private/compat/27.0/27.0.ignore.cil
+++ b/private/compat/27.0/27.0.ignore.cil
@@ -131,6 +131,7 @@
     wait_for_keymaster
     wait_for_keymaster_exec
     wait_for_keymaster_tmpfs
+    watchdogd_tmpfs
     wm_trace_data_file
     wpantund
     wpantund_exec
diff --git a/private/compat/28.0/28.0.cil b/private/compat/28.0/28.0.cil
index a784b444d08a6e873a71da43a49ace1cac455eb7..054cca26830d9124e6b2fcca20943bb56ddf9db9 100644
--- a/private/compat/28.0/28.0.cil
+++ b/private/compat/28.0/28.0.cil
@@ -1177,7 +1177,7 @@
 (typeattributeset incident_helper_28_0 (incident_helper))
 (typeattributeset incident_service_28_0 (incident_service))
 (typeattributeset init_28_0 (init))
-(typeattributeset init_exec_28_0 (init_exec))
+(typeattributeset init_exec_28_0 (init_exec watchdogd_exec))
 (typeattributeset inotify_28_0 (inotify))
 (typeattributeset input_device_28_0 (input_device))
 (typeattributeset inputflinger_28_0 (inputflinger))
diff --git a/private/compat/28.0/28.0.ignore.cil b/private/compat/28.0/28.0.ignore.cil
index 1c09df8eeb8c69e0f927bce74df7eba577362327..ad7faa3512806bd5d528f387ecc0ad1f30588a6a 100644
--- a/private/compat/28.0/28.0.ignore.cil
+++ b/private/compat/28.0/28.0.ignore.cil
@@ -13,4 +13,5 @@
     timedetector_service
     timezonedetector_service
     uri_grants_service
-    vrflinger_vsync_service))
+    vrflinger_vsync_service
+    watchdogd_tmpfs))
diff --git a/private/file_contexts b/private/file_contexts
index 9f3d8174bb85d98ebdba13e438a1ecf1d24d6dbb..e78c02fa8c4522a6b5c8d751ab300a2ff23921db 100644
--- a/private/file_contexts
+++ b/private/file_contexts
@@ -296,6 +296,7 @@
 /system/bin/statsd               u:object_r:statsd_exec:s0
 /system/bin/bpfloader            u:object_r:bpfloader_exec:s0
 /system/bin/wait_for_keymaster   u:object_r:wait_for_keymaster_exec:s0
+/system/bin/watchdogd            u:object_r:watchdogd_exec:s0
 
 #############################
 # Vendor files
diff --git a/private/init.te b/private/init.te
index e9959d3d27aecafc2843fc541d6f0fe661e19c02..4cf69224973580a9336e1ef456111e37398dfd2a 100644
--- a/private/init.te
+++ b/private/init.te
@@ -13,7 +13,6 @@ recovery_only(`
 ')
 domain_trans(init, shell_exec, shell)
 domain_trans(init, init_exec, ueventd)
-domain_trans(init, init_exec, watchdogd)
 domain_trans(init, init_exec, vendor_init)
 domain_trans(init, { rootfs toolbox_exec }, modprobe)
 # case where logpersistd is actually logcat -f in logd context (nee: logcatd)
diff --git a/private/watchdogd.te b/private/watchdogd.te
index 36dd30fd77bbb1d38c7ab650449a24ce042e9ab5..91ece70522d11f67b94bab2e45a79122bb44a6cc 100644
--- a/private/watchdogd.te
+++ b/private/watchdogd.te
@@ -1 +1,3 @@
 typeattribute watchdogd coredomain;
+
+init_daemon_domain(watchdogd)
diff --git a/public/watchdogd.te b/public/watchdogd.te
index 00292a9a9914311711ad4ab7e785a89134659b20..d2718d83355c0e786544c9baa1ec945ab16b7348 100644
--- a/public/watchdogd.te
+++ b/public/watchdogd.te
@@ -1,4 +1,6 @@
 # watchdogd seclabel is specified in init.<board>.rc
 type watchdogd, domain;
+type watchdogd_exec, exec_type, file_type;
+
 allow watchdogd watchdog_device:chr_file rw_file_perms;
 allow watchdogd kmsg_device:chr_file rw_file_perms;