From: Christian Göttsche cgzones@googlemail.com
commit 37801a36b4d68892ce807264f784d818f8d0d39b 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: 0619f0f5e36f ("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: Jianqi Ren jianqi.ren.cn@windriver.com Signed-off-by: He Zhe zhe.he@windriver.com --- Verified the build test --- security/selinux/selinuxfs.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c index ab804d4ea911..c236f3cd2dd7 100644 --- a/security/selinux/selinuxfs.c +++ b/security/selinux/selinuxfs.c @@ -2210,7 +2210,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) @@ -2232,18 +2231,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;
[ Sasha's backport helper bot ]
Hi,
Summary of potential issues: ❌ Build failures detected
The upstream commit SHA1 provided is correct: 37801a36b4d68892ce807264f784d818f8d0d39b
WARNING: Author mismatch between patch and upstream commit: Backport author: jianqi.ren.cn@windriver.com Commit author: Christian Göttschecgzones@googlemail.com
Status in newer kernel trees: 6.14.y | Present (exact SHA1) 6.12.y | Present (exact SHA1) 6.6.y | Present (different SHA1: 477ed6789eb9)
Note: The patch differs from the upstream commit: --- 1: 37801a36b4d68 ! 1: 31f99abbcce21 selinux: avoid dereference of garbage after mount failure @@ Metadata ## Commit message ## selinux: avoid dereference of garbage after mount failure
+ commit 37801a36b4d68892ce807264f784d818f8d0d39b upstream. + In case kern_mount() fails and returns an error pointer return in the error branch instead of continuing and dereferencing the error pointer.
@@ Commit message Fixes: 0619f0f5e36f ("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: Jianqi Ren jianqi.ren.cn@windriver.com + Signed-off-by: He Zhe zhe.he@windriver.com
## security/selinux/selinuxfs.c ## @@ security/selinux/selinuxfs.c: static struct file_system_type sel_fs_type = { ---
Results of testing on various branches:
| Branch | Patch Apply | Build Test | |---------------------------|-------------|------------| | stable/linux-6.1.y | Success | Failed |
Build Errors: Build error for stable/linux-6.1.y: security/selinux/selinuxfs.c: In function 'exit_sel_fs': security/selinux/selinuxfs.c:2261:22: error: 'selinuxfs_mount' undeclared (first use in this function) 2261 | kern_unmount(selinuxfs_mount); | ^~~~~~~~~~~~~~~ security/selinux/selinuxfs.c:2261:22: note: each undeclared identifier is reported only once for each function it appears in make[3]: *** [scripts/Makefile.build:250: security/selinux/selinuxfs.o] Error 1 make[3]: Target 'security/selinux/' not remade because of errors. make[2]: *** [scripts/Makefile.build:503: security/selinux] Error 2 make[2]: Target 'security/' not remade because of errors. make[1]: *** [scripts/Makefile.build:503: security] Error 2 make[1]: Target './' not remade because of errors. make: *** [Makefile:2013: .] Error 2 make: Target '__all' not remade because of errors.
linux-stable-mirror@lists.linaro.org