selinux: support lazy initialization

Loading the SELinux DB is slow, so support lazy initialization so
that it is done when needed.
This commit is contained in:
Luca Boccassi
2023-11-11 12:33:19 +00:00
parent 2c6a231b47
commit 0617da2edb
4 changed files with 97 additions and 20 deletions
+13 -2
View File
@@ -117,14 +117,25 @@ int btrfs_subvol_make_label(const char *path) {
return mac_smack_fix(path, 0);
}
int mac_init(void) {
static int init_internal(bool lazy) {
int r;
assert(!(mac_selinux_use() && mac_smack_use()));
r = mac_selinux_init();
if (lazy)
r = mac_selinux_init_lazy();
else
r = mac_selinux_init();
if (r < 0)
return r;
return mac_smack_init();
}
int mac_init_lazy(void) {
return init_internal(/* lazy=*/ true);
}
int mac_init(void) {
return init_internal(/* lazy=*/ false);
}