diff --git a/policy/modules.conf b/policy/modules.conf
index c46c539c39..2ca1fa51ac 100644
--- a/policy/modules.conf
+++ b/policy/modules.conf
@@ -3113,3 +3113,10 @@ nvme_stas = module
# coreos_installer
#
coreos_installer = module
+
+# Layer: contrib
+# Module: bootupd
+#
+# bootupd - bootloader update daemon
+#
+bootupd = module
diff --git a/policy/modules/contrib/afterburn.te b/policy/modules/contrib/afterburn.te
index 14abb2968b..9e7734639b 100644
--- a/policy/modules/contrib/afterburn.te
+++ b/policy/modules/contrib/afterburn.te
@@ -12,8 +12,6 @@ init_daemon_domain(afterburn_t, afterburn_exec_t)
type afterburn_unit_file_t;
systemd_unit_file(afterburn_unit_file_t)
-permissive afterburn_t;
-
########################################
#
# afterburn local policy
@@ -21,7 +19,9 @@ permissive afterburn_t;
allow afterburn_t self:capability { setgid setuid sys_admin };
allow afterburn_t self:process { fork setpgid };
allow afterburn_t self:fifo_file rw_fifo_file_perms;
+allow afterburn_t self:unix_dgram_socket create_socket_perms;
+kernel_dgram_send(afterburn_t)
kernel_read_all_proc(afterburn_t)
corenet_tcp_connect_http_port(afterburn_t)
@@ -34,10 +34,22 @@ optional_policy(`
auth_use_nsswitch(afterburn_t)
')
+optional_policy(`
+ logging_write_syslog_pid_socket(afterburn_t)
+')
+
optional_policy(`
miscfiles_read_localization(afterburn_t)
')
+optional_policy(`
+ networkmanager_dbus_chat(afterburn_t)
+')
+
+optional_policy(`
+ ssh_filetrans_home_content(afterburn_t)
+')
+
optional_policy(`
sysnet_dns_name_resolve(afterburn_t)
')
diff --git a/policy/modules/contrib/bootupd.fc b/policy/modules/contrib/bootupd.fc
new file mode 100644
index 0000000000..00cdf3c091
--- /dev/null
+++ b/policy/modules/contrib/bootupd.fc
@@ -0,0 +1,7 @@
+/usr/bin/bootupctl -- gen_context(system_u:object_r:bootupd_exec_t,s0)
+/usr/libexec/bootupd -- gen_context(system_u:object_r:bootupd_exec_t,s0)
+
+/usr/lib/systemd/system/bootupd\.service -- gen_context(system_u:object_r:bootupd_unit_file_t,s0)
+/usr/lib/systemd/system/bootupd\.socket -- gen_context(system_u:object_r:bootupd_unit_file_t,s0)
+
+/var/run/bootupd\.sock -s gen_context(system_u:object_r:bootupd_var_run_t,s0)
diff --git a/policy/modules/contrib/bootupd.if b/policy/modules/contrib/bootupd.if
new file mode 100644
index 0000000000..d778b157a6
--- /dev/null
+++ b/policy/modules/contrib/bootupd.if
@@ -0,0 +1,39 @@
+## policy for bootupd
+
+########################################
+##
+## Execute bootupd_exec_t in the bootupd domain.
+##
+##
+##
+## Domain allowed to transition.
+##
+##
+#
+interface(`bootupd_domtrans',`
+ gen_require(`
+ type bootupd_t, bootupd_exec_t;
+ ')
+
+ corecmd_search_bin($1)
+ domtrans_pattern($1, bootupd_exec_t, bootupd_t)
+')
+
+######################################
+##
+## Execute bootupd in the caller domain.
+##
+##
+##
+## Domain allowed access.
+##
+##
+#
+interface(`bootupd_exec',`
+ gen_require(`
+ type bootupd_exec_t;
+ ')
+
+ corecmd_search_bin($1)
+ can_exec($1, bootupd_exec_t)
+')
diff --git a/policy/modules/contrib/bootupd.te b/policy/modules/contrib/bootupd.te
new file mode 100644
index 0000000000..bbe8a99dc3
--- /dev/null
+++ b/policy/modules/contrib/bootupd.te
@@ -0,0 +1,41 @@
+policy_module(bootupd, 1.0.0)
+
+########################################
+#
+# Declarations
+#
+
+type bootupd_t;
+type bootupd_exec_t;
+init_daemon_domain(bootupd_t, bootupd_exec_t)
+
+type bootupd_unit_file_t;
+systemd_unit_file(bootupd_unit_file_t)
+
+type bootupd_var_run_t;
+files_pid_file(bootupd_var_run_t)
+
+permissive bootupd_t;
+
+########################################
+#
+# bootupd local policy
+#
+allow bootupd_t self:capability { setgid setuid };
+allow bootupd_t self:process { fork setpgid };
+allow bootupd_t self:fifo_file rw_fifo_file_perms;
+allow bootupd_t self:unix_dgram_socket create_socket_perms;
+allow bootupd_t self:unix_stream_socket create_stream_socket_perms;
+
+kernel_dgram_send(bootupd_t)
+
+domain_use_interactive_fds(bootupd_t)
+
+files_read_etc_files(bootupd_t)
+
+fs_getattr_all_fs(bootupd_t)
+fs_search_dos(bootupd_t)
+
+optional_policy(`
+ miscfiles_read_localization(bootupd_t)
+')
diff --git a/policy/modules/contrib/coreos_installer.te b/policy/modules/contrib/coreos_installer.te
index d6c3a808e8..ab720fa885 100644
--- a/policy/modules/contrib/coreos_installer.te
+++ b/policy/modules/contrib/coreos_installer.te
@@ -12,8 +12,6 @@ init_daemon_domain(coreos_installer_t, coreos_installer_exec_t)
type coreos_installer_unit_file_t;
systemd_unit_file(coreos_installer_unit_file_t)
-permissive coreos_installer_t;
-
########################################
#
# coreos_installer local policy
diff --git a/policy/modules/contrib/cron.if b/policy/modules/contrib/cron.if
index 80419572cc..821121b9ad 100644
--- a/policy/modules/contrib/cron.if
+++ b/policy/modules/contrib/cron.if
@@ -1079,3 +1079,39 @@ interface(`cron_system_spool_entrypoint',`
')
allow $1 system_cron_spool_t:file entrypoint;
')
+
+########################################
+##
+## Execute crontab in the crontab domain.
+##
+##
+##
+## Domain allowed to transition.
+##
+##
+#
+interface(`crontab_domtrans',`
+ gen_require(`
+ type crontab_exec_t, crontab_t;
+ ')
+
+ domtrans_pattern($1, crontab_exec_t, crontab_t)
+')
+
+########################################
+##
+## Execute crontab in the admin crontab domain.
+##
+##
+##
+## Domain allowed to transition.
+##
+##
+#
+interface(`crontab_admin_domtrans',`
+ gen_require(`
+ type crontab_exec_t, admin_crontab_t;
+ ')
+
+ domtrans_pattern($1, crontab_exec_t, admin_crontab_t)
+')
diff --git a/policy/modules/contrib/mptcpd.te b/policy/modules/contrib/mptcpd.te
index cabf749a69..e7ed82f331 100644
--- a/policy/modules/contrib/mptcpd.te
+++ b/policy/modules/contrib/mptcpd.te
@@ -13,8 +13,6 @@ init_nnp_daemon_domain(mptcpd_t)
type mptcpd_etc_t;
files_config_file(mptcpd_etc_t)
-permissive mptcpd_t;
-
########################################
#
# mptcpd local policy
diff --git a/policy/modules/contrib/numad.te b/policy/modules/contrib/numad.te
index 97f923b252..b0f92f8162 100644
--- a/policy/modules/contrib/numad.te
+++ b/policy/modules/contrib/numad.te
@@ -24,6 +24,7 @@ files_pid_file(numad_var_run_t)
#
allow numad_t self:capability { ipc_owner kill sys_nice sys_ptrace } ;
+allow numad_t self:cap_userns sys_ptrace;
allow numad_t self:fifo_file rw_fifo_file_perms;
allow numad_t self:msgq create_msgq_perms;
allow numad_t self:msg { send receive };
diff --git a/policy/modules/contrib/rshim.te b/policy/modules/contrib/rshim.te
index 7225deead9..c40af4e66d 100644
--- a/policy/modules/contrib/rshim.te
+++ b/policy/modules/contrib/rshim.te
@@ -12,8 +12,6 @@ init_daemon_domain(rshim_t, rshim_exec_t)
type rshim_unit_file_t;
systemd_unit_file(rshim_unit_file_t)
-permissive rshim_t;
-
########################################
#
# rshim local policy
diff --git a/policy/modules/contrib/virt.te b/policy/modules/contrib/virt.te
index 488804c40f..bcf8cbcb3e 100644
--- a/policy/modules/contrib/virt.te
+++ b/policy/modules/contrib/virt.te
@@ -371,6 +371,7 @@ allow svirt_t self:netlink_route_socket r_netlink_socket_perms;
allow svirt_t virtlogd_t:unix_stream_socket connectto;
kernel_request_load_module(svirt_t)
+kernel_read_vm_sysctls(svirt_t)
corenet_udp_sendrecv_generic_if(svirt_t)
corenet_udp_sendrecv_generic_node(svirt_t)
diff --git a/policy/modules/kernel/storage.fc b/policy/modules/kernel/storage.fc
index f50225ee23..78b723f4c2 100644
--- a/policy/modules/kernel/storage.fc
+++ b/policy/modules/kernel/storage.fc
@@ -32,6 +32,7 @@
/dev/megaraid_sas_ioctl_node -c gen_context(system_u:object_r:fixed_disk_device_t,mls_systemhigh)
/dev/megadev.* -c gen_context(system_u:object_r:fixed_disk_device_t,mls_systemhigh)
/dev/mmcblk.* -b gen_context(system_u:object_r:removable_device_t,s0)
+/dev/mmcblk[0-9]+rpmb -c gen_context(system_u:object_r:removable_device_t,s0)
/dev/mspblk.* -b gen_context(system_u:object_r:removable_device_t,s0)
/dev/mtd.* -b gen_context(system_u:object_r:fixed_disk_device_t,mls_systemhigh)
/dev/mtd.* -c gen_context(system_u:object_r:fixed_disk_device_t,mls_systemhigh)
diff --git a/policy/modules/roles/staff.te b/policy/modules/roles/staff.te
index 2303b2b7da..9f67c92c1c 100644
--- a/policy/modules/roles/staff.te
+++ b/policy/modules/roles/staff.te
@@ -322,6 +322,9 @@ optional_policy(`
optional_policy(`
sudo_role_template(staff, staff_r, staff_t)
+ optional_policy(`
+ crontab_domtrans(staff_sudo_t)
+ ')
')
optional_policy(`
diff --git a/policy/modules/roles/sysadm.te b/policy/modules/roles/sysadm.te
index 04b4bdcf72..f288c7500a 100644
--- a/policy/modules/roles/sysadm.te
+++ b/policy/modules/roles/sysadm.te
@@ -602,6 +602,9 @@ optional_policy(`
optional_policy(`
sudo_role_template(sysadm, sysadm_r, sysadm_t)
+ optional_policy(`
+ crontab_admin_domtrans(sysadm_sudo_t)
+ ')
')
optional_policy(`