diff --git a/policy/modules/kernel/kernel.if b/policy/modules/kernel/kernel.if
index 7914e1fd4..2e915da3e 100644
--- a/policy/modules/kernel/kernel.if
+++ b/policy/modules/kernel/kernel.if
@@ -3210,6 +3210,43 @@ interface(`kernel_delete_unlabeled_sockets',`
delete_sock_files_pattern($1, unlabeled_t, unlabeled_t)
')
+
+########################################
+##
+## Allow caller to relabel from unlabeled block devices.
+##
+##
+##
+## Domain allowed access.
+##
+##
+#
+interface(`kernel_relabelfrom_unlabeled_blk_devs',`
+ gen_require(`
+ type unlabeled_t;
+ ')
+
+ allow $1 unlabeled_t:blk_file { getattr relabelfrom };
+')
+
+########################################
+##
+## Allow caller to relabel from unlabeled character devices.
+##
+##
+##
+## Domain allowed access.
+##
+##
+#
+interface(`kernel_relabelfrom_unlabeled_chr_devs',`
+ gen_require(`
+ type unlabeled_t;
+ ')
+
+ allow $1 unlabeled_t:chr_file { getattr relabelfrom };
+')
+
########################################
##
## Send and receive messages from an
diff --git a/policy/modules/system/selinuxutil.te b/policy/modules/system/selinuxutil.te
index fad28f179..8d062dd88 100644
--- a/policy/modules/system/selinuxutil.te
+++ b/policy/modules/system/selinuxutil.te
@@ -354,6 +354,14 @@ kernel_getattr_debugfs(restorecond_t)
kernel_read_system_state(restorecond_t)
kernel_rw_pipes(restorecond_t)
kernel_use_fds(restorecond_t)
+kernel_list_unlabeled(restorecond_t)
+kernel_relabelfrom_unlabeled_dirs(restorecond_t)
+kernel_relabelfrom_unlabeled_files(restorecond_t)
+kernel_relabelfrom_unlabeled_symlinks(restorecond_t)
+kernel_relabelfrom_unlabeled_pipes(restorecond_t)
+kernel_relabelfrom_unlabeled_sockets(restorecond_t)
+kernel_relabelfrom_unlabeled_blk_devs(restorecond_t)
+kernel_relabelfrom_unlabeled_chr_devs(restorecond_t)
fs_dontaudit_list_nfs(restorecond_t)
fs_getattr_all_xattr_fs(restorecond_t)
@@ -586,6 +594,8 @@ kernel_relabelfrom_unlabeled_files(setfiles_t)
kernel_relabelfrom_unlabeled_symlinks(setfiles_t)
kernel_relabelfrom_unlabeled_pipes(setfiles_t)
kernel_relabelfrom_unlabeled_sockets(setfiles_t)
+kernel_relabelfrom_unlabeled_blk_devs(setfiles_t)
+kernel_relabelfrom_unlabeled_chr_devs(setfiles_t)
kernel_use_fds(setfiles_t)
kernel_rw_pipes(setfiles_t)
kernel_rw_unix_dgram_sockets(setfiles_t)
diff --git a/policy/modules/system/userdomain.if b/policy/modules/system/userdomain.if
index 5aab9ada7..e9556084f 100644
--- a/policy/modules/system/userdomain.if
+++ b/policy/modules/system/userdomain.if
@@ -1425,6 +1425,14 @@ template(`userdom_security_admin_template',`
# Necessary for managing /boot/efi
fs_manage_dos_files($1)
+ kernel_relabelfrom_unlabeled_dirs($1)
+ kernel_relabelfrom_unlabeled_files($1)
+ kernel_relabelfrom_unlabeled_symlinks($1)
+ kernel_relabelfrom_unlabeled_pipes($1)
+ kernel_relabelfrom_unlabeled_sockets($1)
+ kernel_relabelfrom_unlabeled_blk_devs($1)
+ kernel_relabelfrom_unlabeled_chr_devs($1)
+
mls_process_read_all_levels($1)
mls_file_read_all_levels($1)
mls_file_upgrade($1)