From: Chanho Park <chanho61.park@samsung.com>
Date: Tue, 3 Jun 2014 19:54:53 +0900
Subject: [PATCH] LOCAL / smack: add permissive mode for debugging purpose

This patch adds smack permissive mode.

Signed-off-by: Chanho Park <chanho61.park@samsung.com>
Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
[k.kozlowski: rebased on 4.1]
Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
[m.szyprowski: rebased on 5.4]
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
---
 security/smack/Kconfig        |  8 ++++
 security/smack/smack.h        |  9 +++++
 security/smack/smack_access.c | 12 ++++++
 security/smack/smack_lsm.c    | 11 ++++++
 security/smack/smackfs.c      | 72 +++++++++++++++++++++++++++++++++++
 5 files changed, 112 insertions(+)

diff --git a/security/smack/Kconfig b/security/smack/Kconfig
index 5a8dfad469c3..39ded0b9bf38 100644
--- a/security/smack/Kconfig
+++ b/security/smack/Kconfig
@@ -53,3 +53,11 @@ config SECURITY_SMACK_APPEND_SIGNALS
 	  to differentiate between delivering a network packet and
 	  delivering a signal in the Smack rules.
 	  If you are unsure how to answer this question, answer N.
+
+config SECURITY_SMACK_PERMISSIVE_MODE
+	bool "Enable Permissive mode for debugging purpose"
+	depends on SECURITY_SMACK
+	help
+	  This selects the permissive mode of smack for debug purpose. This
+	  do not block any access of the smack policy and just warn the block
+	  by log message.
diff --git a/security/smack/smack.h b/security/smack/smack.h
index 335d2411abe4..9e8000c283cc 100644
--- a/security/smack/smack.h
+++ b/security/smack/smack.h
@@ -424,6 +424,15 @@ static inline struct smack_known *smk_of_current(void)
 	return smk_of_task(smack_cred(current_cred()));
 }
 
+#ifdef CONFIG_SECURITY_SMACK_PERMISSIVE_MODE
+/*
+ * permissive mode
+ */
+#define SMACK_PERMISSIVE_DENIED 0x0
+#define SMACK_PERMISSIVE_ALLOWED 0x1
+extern int permissive_mode;
+#endif
+
 /*
  * logging functions
  */
diff --git a/security/smack/smack_access.c b/security/smack/smack_access.c
index 38ac3da4e791..2b63a2643ef5 100644
--- a/security/smack/smack_access.c
+++ b/security/smack/smack_access.c
@@ -45,6 +45,14 @@ LIST_HEAD(smack_known_list);
  */
 static u32 smack_next_secid = 10;
 
+/*
+ * are we running in permissive mode?
+ * can be overwritten at run-time by /smack/permissive
+ */
+#ifdef CONFIG_SECURITY_SMACK_PERMISSIVE_MODE
+int permissive_mode = SMACK_PERMISSIVE_ALLOWED;
+#endif
+
 /*
  * what events do we log
  * can be overwritten at run-time by /smack/logging
@@ -200,6 +208,10 @@ int smk_access(struct smack_known *subject, struct smack_known *object,
 		smack_log(subject->smk_known, object->smk_known,
 			  request, rc, a);
 #endif
+#ifdef CONFIG_SECURITY_SMACK_PERMISSIVE_MODE
+	if (permissive_mode == SMACK_PERMISSIVE_ALLOWED)
+		return 0;
+#endif
 
 	return rc;
 }
diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
index 12c0fa85d9f8..a8d2f81690e4 100644
--- a/security/smack/smack_lsm.c
+++ b/security/smack/smack_lsm.c
@@ -4796,6 +4796,17 @@ static __init int smack_init(void)
 	return 0;
 }
 
+#ifdef CONFIG_SECURITY_SMACK_PERMISSIVE_MODE
+static int __init mode_setup(char *str)
+{
+	unsigned long mode;
+	if (!kstrtoul(str, 10, &mode))
+		permissive_mode = mode ? 1 : 0;
+	return 1;
+}
+__setup("permissive=", mode_setup);
+#endif
+
 /*
  * Smack requires early initialization in order to label
  * all processes and objects when they are created.
diff --git a/security/smack/smackfs.c b/security/smack/smackfs.c
index c21b656b3263..fc033626085f 100644
--- a/security/smack/smackfs.c
+++ b/security/smack/smackfs.c
@@ -59,6 +59,9 @@ enum smk_inos {
 	SMK_NET6ADDR	= 23,	/* single label IPv6 hosts */
 #endif /* CONFIG_IPV6 */
 	SMK_RELABEL_SELF = 24, /* relabel possible without CAP_MAC_ADMIN */
+#ifdef CONFIG_SECURITY_SMACK_PERMISSIVE_MODE
+	SMK_PERMISSIVE	= 25,	/* permissive mode */
+#endif
 };
 
 /*
@@ -677,6 +680,71 @@ static const struct file_operations smk_load_ops = {
 	.release        = seq_release,
 };
 
+#ifdef CONFIG_SECURITY_SMACK_PERMISSIVE_MODE
+/**
+ * smk_read_permissive - read() for /smack/permissive
+ * @filp: file pointer, not actually used
+ * @buf: where to put the result
+ * @cn: maximum to send along
+ * @ppos: where to start
+ *
+ * Returns number of bytes read or error code, as appropriate
+ */
+static ssize_t smk_read_permissive(struct file *filp, char __user *buf,
+				size_t count, loff_t *ppos)
+{
+	char temp[32];
+	ssize_t rc;
+
+	if (*ppos != 0)
+		return 0;
+
+	sprintf(temp, "%d\n", permissive_mode);
+	rc = simple_read_from_buffer(buf, count, ppos, temp, strlen(temp));
+	return rc;
+}
+
+/**
+ * smk_write_permissive - write() for /smack/permissive
+ * @file: file pointer, not actually used
+ * @buf: where to get the data from
+ * @count: bytes sent
+ * @ppos: where to start
+ *
+ * Returns number of bytes written or error code, as appropriate
+ */
+static ssize_t smk_write_permissive(struct file *file, const char __user *buf,
+				size_t count, loff_t *ppos)
+{
+	char temp[32];
+	int i;
+
+	if (!capable(CAP_MAC_ADMIN))
+		return -EPERM;
+
+	if (count >= sizeof(temp) || count == 0)
+		return -EINVAL;
+
+	if (copy_from_user(temp, buf, count) != 0)
+		return -EFAULT;
+
+	temp[count] = '\0';
+
+	if (sscanf(temp, "%d", &i) != 1)
+		return -EINVAL;
+	if (i < 0 || i > 1)
+		return -EINVAL;
+	permissive_mode = i;
+	return count;
+}
+
+static const struct file_operations smk_permissive_ops = {
+	.read		= smk_read_permissive,
+	.write		= smk_write_permissive,
+	.llseek		= default_llseek,
+};
+#endif	/* End of CONFIG_SECURITY_SMACK_PERMISSIVE_MODE */
+
 /**
  * smk_cipso_doi - initialize the CIPSO domain
  */
@@ -2881,6 +2949,10 @@ static int smk_fill_super(struct super_block *sb, struct fs_context *fc)
 		[SMK_UNCONFINED] = {
 			"unconfined", &smk_unconfined_ops, S_IRUGO|S_IWUSR},
 #endif
+#ifdef CONFIG_SECURITY_SMACK_PERMISSIVE_MODE
+		[SMK_PERMISSIVE] = {
+			"permissive", &smk_permissive_ops, S_IRUGO|S_IWUSR},
+#endif
 #if IS_ENABLED(CONFIG_IPV6)
 		[SMK_NET6ADDR] = {
 			"ipv6host", &smk_net6addr_ops, S_IRUGO|S_IWUSR},
-- 
2.17.1

