diff --git a/policy/modules/kernel/devices.if b/policy/modules/kernel/devices.if
index efaf808..b88f2bc 100644
--- a/policy/modules/kernel/devices.if
+++ b/policy/modules/kernel/devices.if
@@ -334,6 +334,24 @@ interface(`dev_dontaudit_getattr_generic_files',`
 	dontaudit $1 device_t:file getattr;
 ')
 
+#######################################
+## <summary>
+##  Read generic files in /dev.
+## </summary>
+## <param name="domain">
+##  <summary>
+##  Domain to not audit.
+##  </summary>
+## </param>
+#
+interface(`dev_read_generic_files',`
+    gen_require(`
+        type device_t;
+    ')
+
+    read_files_pattern($1, device_t, device_t)
+')
+
 ########################################
 ## <summary>
 ##	Read and write generic files in /dev.
diff --git a/policy/modules/kernel/files.if b/policy/modules/kernel/files.if
index 958ca84..565d11c 100644
--- a/policy/modules/kernel/files.if
+++ b/policy/modules/kernel/files.if
@@ -411,6 +411,25 @@ interface(`files_tmpfs_file',`
 	typeattribute $1 tmpfsfile;
 ')
 
+#######################################
+## <summary>
+##  Do not audit attempts to getattr
+##  all tmpfs files.
+## </summary>
+## <param name="domain">
+##  <summary>
+##  Domain to not audit.
+##  </summary>
+## </param>
+#
+interface(`files_dontaudit_getattr_tmpfs_files',`
+    gen_require(`
+        attribute tmpfsfile;
+    ')
+
+    allow $1 tmpfsfile:file getattr;
+')
+
 ########################################
 ## <summary>
 ##	Get the attributes of all directories.
diff --git a/policy/modules/kernel/filesystem.if b/policy/modules/kernel/filesystem.if
index dfe361a..064231e 100644
--- a/policy/modules/kernel/filesystem.if
+++ b/policy/modules/kernel/filesystem.if
@@ -1965,6 +1965,24 @@ interface(`fs_associate_hugetlbfs',`
 	allow $1 hugetlbfs_t:filesystem associate;
 ')
 
+#######################################
+## <summary>
+##  List hugetlbfs dirs
+## </summary>
+## <param name="domain">
+##  <summary>
+##  Domain allowed access.
+##  </summary>
+## </param>
+#
+interface(`fs_list_hugetlbfs',`
+    gen_require(`
+        type hugetlbfs_t;
+    ')
+
+    allow $1 hugetlbfs_t:dir list_dir_perms;
+')
+
 ########################################
 ## <summary>
 ##	Search inotifyfs filesystem.
diff --git a/policy/modules/system/raid.fc b/policy/modules/system/raid.fc
index ed9c70d..b961d53 100644
--- a/policy/modules/system/raid.fc
+++ b/policy/modules/system/raid.fc
@@ -1,4 +1,10 @@
-/dev/.mdadm.map		--	gen_context(system_u:object_r:mdadm_map_t,s0)
+/dev/.mdadm\.map	--	gen_context(system_u:object_r:mdadm_var_run_t,s0)
+/dev/md(/.*)?			gen_context(system_u:object_r:mdadm_var_run_t,s0)
+
+#669402
+/usr/sbin/iprdump   --  gen_context(system_u:object_r:mdadm_exec_t,s0)
+/usr/sbin/iprinit   --  gen_context(system_u:object_r:mdadm_exec_t,s0)
+/usr/sbin/iprupdate --  gen_context(system_u:object_r:mdadm_exec_t,s0)
 
 /sbin/mdadm		--	gen_context(system_u:object_r:mdadm_exec_t,s0)
 /sbin/mdmpd		--	gen_context(system_u:object_r:mdadm_exec_t,s0)
diff --git a/policy/modules/system/raid.te b/policy/modules/system/raid.te
index 73cc8cf..bf6a0b6 100644
--- a/policy/modules/system/raid.te
+++ b/policy/modules/system/raid.te
@@ -10,11 +10,9 @@ type mdadm_exec_t;
 init_daemon_domain(mdadm_t, mdadm_exec_t)
 role system_r types mdadm_t;
 
-type mdadm_map_t;
-files_type(mdadm_map_t)
-
-type mdadm_var_run_t;
+type mdadm_var_run_t alias mdadm_map_t;
 files_pid_file(mdadm_var_run_t)
+dev_associate(mdadm_var_run_t)
 
 ########################################
 #
@@ -25,13 +23,13 @@ allow mdadm_t self:capability { dac_override sys_admin ipc_lock };
 dontaudit mdadm_t self:capability sys_tty_config;
 allow mdadm_t self:process { sigchld sigkill sigstop signull signal };
 allow mdadm_t self:fifo_file rw_fifo_file_perms;
+allow mdadm_t self:netlink_kobject_uevent_socket create_socket_perms;
 
-# create .mdadm files in /dev
-allow mdadm_t mdadm_map_t:file manage_file_perms;
-dev_filetrans(mdadm_t, mdadm_map_t, file)
-
+manage_dirs_pattern(mdadm_t, mdadm_var_run_t, mdadm_var_run_t)
 manage_files_pattern(mdadm_t, mdadm_var_run_t, mdadm_var_run_t)
-files_pid_filetrans(mdadm_t, mdadm_var_run_t, file)
+manage_sock_files_pattern(mdadm_t, mdadm_var_run_t, mdadm_var_run_t)
+files_pid_filetrans(mdadm_t, mdadm_var_run_t, { file dir })
+dev_filetrans(mdadm_t, mdadm_var_run_t, { file dir sock_file })
 
 kernel_read_system_state(mdadm_t)
 kernel_read_kernel_sysctls(mdadm_t)
@@ -52,13 +50,16 @@ dev_dontaudit_getattr_generic_blk_files(mdadm_t)
 dev_read_realtime_clock(mdadm_t)
 # unfortunately needed for DMI decoding:
 dev_read_raw_memory(mdadm_t)
+dev_read_generic_files(mdadm_t)
 
 domain_use_interactive_fds(mdadm_t)
 
 files_read_etc_files(mdadm_t)
 files_read_etc_runtime_files(mdadm_t)
+files_dontaudit_getattr_tmpfs_files(mdadm_t)
 
-fs_search_auto_mountpoints(mdadm_t)
+fs_list_hugetlbfs(mdadm_t)
+fs_list_auto_mountpoints(mdadm_t)
 fs_dontaudit_list_tmpfs(mdadm_t)
 
 mls_file_read_all_levels(mdadm_t)
@@ -68,6 +69,7 @@ mls_file_write_all_levels(mdadm_t)
 storage_manage_fixed_disk(mdadm_t)
 storage_dev_filetrans_fixed_disk(mdadm_t)
 storage_read_scsi_generic(mdadm_t)
+storage_write_scsi_generic(mdadm_t)
 
 term_dontaudit_list_ptys(mdadm_t)
 
