selinux: ensure the policy has been loaded before reading the sidtab stats
authorPaul Moore <paul@paul-moore.com>
Mon, 23 Dec 2019 21:38:36 +0000 (16:38 -0500)
committerPaul Moore <paul@paul-moore.com>
Mon, 23 Dec 2019 21:38:36 +0000 (16:38 -0500)
Check to make sure we have loaded a policy before we query the
sidtab's hash stats.  Failure to do so could result in a kernel
panic/oops due to a dereferenced NULL pointer.

Fixes: 66f8e2f03c02 ("selinux: sidtab reverse lookup hash table")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
security/selinux/ss/services.c

index 743b85e..c9e38f1 100644 (file)
@@ -1286,6 +1286,12 @@ int security_sidtab_hash_stats(struct selinux_state *state, char *page)
 {
        int rc;
 
+       if (!state->initialized) {
+               pr_err("SELinux: %s:  called before initial load_policy\n",
+                      __func__);
+               return -EINVAL;
+       }
+
        read_lock(&state->ss->policy_rwlock);
        rc = sidtab_hash_stats(state->ss->sidtab, page);
        read_unlock(&state->ss->policy_rwlock);