diff --git a/file.te b/file.te
index 7045d6c7eb8b428484cc2379d4e31f430742000a..dcb94337fc4d96c852d274ad3a30269844563716 100644
--- a/file.te
+++ b/file.te
@@ -205,6 +205,7 @@ type rild_socket, file_type;
 type rild_debug_socket, file_type;
 type system_wpa_socket, file_type;
 type system_ndebug_socket, file_type;
+type uncrypt_socket, file_type;
 type vold_socket, file_type;
 type wpa_socket, file_type;
 type zygote_socket, file_type;
diff --git a/file_contexts b/file_contexts
index d777ba1a58b38482b4a3ebcb6d04932813f5627b..d6773580da204c874084f9be1f8f5e9da8045b9c 100644
--- a/file_contexts
+++ b/file_contexts
@@ -116,6 +116,7 @@
 /dev/socket/racoon	u:object_r:racoon_socket:s0
 /dev/socket/rild	u:object_r:rild_socket:s0
 /dev/socket/rild-debug	u:object_r:rild_debug_socket:s0
+/dev/socket/uncrypt	u:object_r:uncrypt_socket:s0
 /dev/socket/vold	u:object_r:vold_socket:s0
 /dev/socket/wpa_eth[0-9] u:object_r:wpa_socket:s0
 /dev/socket/wpa_wlan[0-9] u:object_r:wpa_socket:s0
diff --git a/system_server.te b/system_server.te
index 456691af72f52c29361f47f56cd92b01942161e9..fb5e94797704991b72d114cba9c9e187a166bac8 100644
--- a/system_server.te
+++ b/system_server.te
@@ -132,6 +132,7 @@ unix_socket_connect(system_server, zygote, zygote)
 unix_socket_connect(system_server, gps, gpsd)
 unix_socket_connect(system_server, racoon, racoon)
 unix_socket_send(system_server, wpa, wpa)
+unix_socket_connect(system_server, uncrypt, uncrypt)
 
 # Communicate over a socket created by surfaceflinger.
 allow system_server surfaceflinger:unix_stream_socket { read write setopt };
diff --git a/uncrypt.te b/uncrypt.te
index 354bda0043088e6c2fccde552b8f2a152c29c7e6..c8840dd6d70900ff99e65396728dc348f9283569 100644
--- a/uncrypt.te
+++ b/uncrypt.te
@@ -16,10 +16,11 @@ userdebug_or_eng(`
 
 # Read /cache/recovery/command
 # Read /cache/recovery/uncrypt_file
-# Write to pipe file /cache/recovery/uncrypt_status
 allow uncrypt cache_recovery_file:dir rw_dir_perms;
 allow uncrypt cache_recovery_file:file create_file_perms;
-allow uncrypt cache_recovery_file:fifo_file w_file_perms;
+
+# Write to /dev/socket/uncrypt
+unix_socket_connect(uncrypt, uncrypt, uncrypt)
 
 # Set a property to reboot the device.
 set_prop(uncrypt, powerctl_prop)