LWN.net Logo

[PATCH] [4/6] LSM Stacking: seclvl LSM stacking support

From:  Serge Hallyn <serue@us.ibm.com>
To:  Chris Wright <chrisw@osdl.org>
Subject:  Re: [RFC] [PATCH] [4/6] LSM Stacking: seclvl LSM stacking support
Date:  Thu, 04 Nov 2004 17:09:55 -0600
Cc:  Andrew Morton <akpm@osdl.org>, lkml <linux-kernel@vger.kernel.org>

This patch adds stacking support to the BSD Secure Level LSM.

Signed-off-by: Serge E. Hallyn <serue@us.ibm.com>

Index: linux-2.6.10-rc1-bk12-stack/security/seclvl.c
===================================================================
--- linux-2.6.10-rc1-bk12-stack.orig/security/seclvl.c	2004-11-02
20:28:47.000000000 -0600
+++ linux-2.6.10-rc1-bk12-stack/security/seclvl.c	2004-11-03
23:01:08.478130544 -0600
@@ -58,6 +58,8 @@
 MODULE_PARM_DESC(verbosity, "Initial verbosity level (0 or 1; defaults
to "
 		 "0, which is Quiet)");
 
+static int seclvl_idx;
+
 /**
  * Optional password which can be passed in to bring seclvl to 0
  * (i.e., for halt/reboot).  Defaults to NULL (the passwd attribute
@@ -498,7 +500,7 @@
 			return -EPERM;
 		}
 		/* claimed, mark it to release on close */
-		inode->i_security = current;
+		inode->i_security[seclvl_idx] = current;
 	}
 	return 0;
 }
@@ -506,12 +508,12 @@
 /* release the blockdev if you claimed it */
 static void seclvl_bd_release(struct inode *inode)
 {
-	if (inode && S_ISBLK(inode->i_mode) && inode->i_security == current) {
+	if (inode && S_ISBLK(inode->i_mode) && inode->i_security[seclvl_idx]
== current) {
 		struct block_device *bdev = inode->i_bdev;
 		if (bdev) {
 			bd_release(bdev);
 			blkdev_put(bdev);
-			inode->i_security = NULL;
+			inode->i_security[seclvl_idx] = NULL;
 		}
 	}
 }
@@ -697,11 +699,12 @@
 			      "seclvl: Failure registering with the "
 			      "kernel.\n");
 		/* try registering with primary module */
-		rc = mod_reg_security(MY_NAME, &seclvl_ops);
-		if (rc) {
+		seclvl_idx = mod_reg_security(MY_NAME, &seclvl_ops);
+		if (seclvl_idx < 0) {
 			seclvl_printk(0, KERN_ERR, "seclvl: Failure "
 				      "registering with primary security "
 				      "module.\n");
+			rc = seclvl_idx;
 			goto exit;
 		}		/* if primary module registered */
 		secondary = 1;


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Copyright © 2004, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds