Patch "scsi: target: Fix SELinux error when systemd-modules loads the target module" has been added to the 6.8-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    scsi: target: Fix SELinux error when systemd-modules loads the target module

to the 6.8-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     scsi-target-fix-selinux-error-when-systemd-modules-l.patch
and it can be found in the queue-6.8 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 887b987b4334d555ec30e71958d810ef9585e29a
Author: Maurizio Lombardi <mlombard@xxxxxxxxxx>
Date:   Thu Feb 15 15:39:43 2024 +0100

    scsi: target: Fix SELinux error when systemd-modules loads the target module
    
    [ Upstream commit 97a54ef596c3fd24ec2b227ba8aaf2cf5415e779 ]
    
    If the systemd-modules service loads the target module, the credentials of
    that userspace process will be used to validate the access to the target db
    directory.  SELinux will prevent it, reporting an error like the following:
    
    kernel: audit: type=1400 audit(1676301082.205:4): avc: denied  { read }
    for  pid=1020 comm="systemd-modules" name="target" dev="dm-3"
    ino=4657583 scontext=system_u:system_r:systemd_modules_load_t:s0
    tcontext=system_u:object_r:targetd_etc_rw_t:s0 tclass=dir permissive=0
    
    Fix the error by using the kernel credentials to access the db directory
    
    Signed-off-by: Maurizio Lombardi <mlombard@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20240215143944.847184-2-mlombard@xxxxxxxxxx
    Reviewed-by: Mike Christie <michael.christie@xxxxxxxxxx>
    Signed-off-by: Martin K. Petersen <martin.petersen@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/target/target_core_configfs.c b/drivers/target/target_core_configfs.c
index c1fbcdd161826..c40217f44b1bc 100644
--- a/drivers/target/target_core_configfs.c
+++ b/drivers/target/target_core_configfs.c
@@ -3672,6 +3672,8 @@ static int __init target_core_init_configfs(void)
 {
 	struct configfs_subsystem *subsys = &target_core_fabrics;
 	struct t10_alua_lu_gp *lu_gp;
+	struct cred *kern_cred;
+	const struct cred *old_cred;
 	int ret;
 
 	pr_debug("TARGET_CORE[0]: Loading Generic Kernel Storage"
@@ -3748,11 +3750,21 @@ static int __init target_core_init_configfs(void)
 	if (ret < 0)
 		goto out;
 
+	/* We use the kernel credentials to access the target directory */
+	kern_cred = prepare_kernel_cred(&init_task);
+	if (!kern_cred) {
+		ret = -ENOMEM;
+		goto out;
+	}
+	old_cred = override_creds(kern_cred);
 	target_init_dbroot();
+	revert_creds(old_cred);
+	put_cred(kern_cred);
 
 	return 0;
 
 out:
+	target_xcopy_release_pt();
 	configfs_unregister_subsystem(subsys);
 	core_dev_release_virtual_lun0();
 	rd_module_exit();




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux