Skip to content

Commit

Permalink
selinux: avoid dereference of garbage after mount failure
Browse files Browse the repository at this point in the history
commit 37801a3 upstream.

In case kern_mount() fails and returns an error pointer return in the
error branch instead of continuing and dereferencing the error pointer.

While on it drop the never read static variable selinuxfs_mount.

Cc: stable@vger.kernel.org
Fixes: 0619f0f ("selinux: wrap selinuxfs state")
Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
cgzones authored and gregkh committed Apr 10, 2024
1 parent 9e2af26 commit 477ed67
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions security/selinux/selinuxfs.c
Expand Up @@ -2135,7 +2135,6 @@ static struct file_system_type sel_fs_type = {
.kill_sb = sel_kill_sb,
};

static struct vfsmount *selinuxfs_mount __ro_after_init;
struct path selinux_null __ro_after_init;

static int __init init_sel_fs(void)
Expand All @@ -2157,18 +2156,21 @@ static int __init init_sel_fs(void)
return err;
}

selinux_null.mnt = selinuxfs_mount = kern_mount(&sel_fs_type);
if (IS_ERR(selinuxfs_mount)) {
selinux_null.mnt = kern_mount(&sel_fs_type);
if (IS_ERR(selinux_null.mnt)) {
pr_err("selinuxfs: could not mount!\n");
err = PTR_ERR(selinuxfs_mount);
selinuxfs_mount = NULL;
err = PTR_ERR(selinux_null.mnt);
selinux_null.mnt = NULL;
return err;
}

selinux_null.dentry = d_hash_and_lookup(selinux_null.mnt->mnt_root,
&null_name);
if (IS_ERR(selinux_null.dentry)) {
pr_err("selinuxfs: could not lookup null!\n");
err = PTR_ERR(selinux_null.dentry);
selinux_null.dentry = NULL;
return err;
}

return err;
Expand Down

0 comments on commit 477ed67

Please sign in to comment.