@@ -306,6 +306,16 @@ void *ima_policy_next(struct seq_file *m, void *v, loff_t *pos);
void ima_policy_stop(struct seq_file *m, void *v);
int ima_policy_show(struct seq_file *m, void *v);
+int ima_policy_setup(char *str,
+ struct ima_policy_setup_data *policy_setup_data,
+ bool *fail_unverifiable_sigs);
+int ima_default_measure_policy_setup(const char *str,
+ struct ima_policy_setup_data *setup_data);
+int ima_default_appraise_policy_setup(const char *str,
+ struct ima_policy_setup_data *setup_data);
+int ima_default_appraise_setup(const char *str,
+ struct ima_policy_setup_data *setup_data);
+
/* Appraise integrity measurements */
#define IMA_APPRAISE_ENFORCE 0x01
#define IMA_APPRAISE_FIX 0x02
@@ -16,6 +16,15 @@
#include "ima.h"
+int ima_default_appraise_setup(const char *str,
+ struct ima_policy_setup_data *setup_data)
+{
+ /* Currently unused. It will be implemented after namespacing ima
+ * policy, when global variables are removed.
+ */
+ return 1;
+}
+
static int __init default_appraise_setup(char *str)
{
#ifdef CONFIG_IMA_APPRAISE_BOOTPARAM
@@ -223,6 +223,15 @@ struct ima_policy_data init_policy_data = {
.ima_temp_rules = LIST_HEAD_INIT(init_policy_data.ima_temp_rules),
};
+int ima_default_measure_policy_setup(const char *str,
+ struct ima_policy_setup_data *setup_data)
+{
+ /* Currently unused. It will be implemented after namespacing ima
+ * policy, when global variables are removed.
+ */
+ return 1;
+}
+
static int __init default_measure_policy_setup(char *str)
{
if (ima_policy)
@@ -236,6 +245,25 @@ __setup("ima_tcb", default_measure_policy_setup);
static bool ima_use_appraise_tcb __initdata;
static bool ima_use_secure_boot __initdata;
static bool ima_fail_unverifiable_sigs __ro_after_init;
+
+/**
+ * ima_policy_setup - parse policy configuration string "ima_policy="
+ * @str: string to be parsed
+ * @setup_data: pointer to a structure where parsed data is stored
+ * @fail_unverifiable_sigs: boolean flag treated separately to preserve
+ * __ro_after_init
+ */
+int ima_policy_setup(char *str,
+ struct ima_policy_setup_data *setup_data,
+ bool *fail_unverifiable_sigs)
+{
+
+ /* Currently unused. It will be implemented after namespacing ima
+ * policy, when global variables are removed.
+ */
+ return 1;
+}
+
static int __init policy_setup(char *str)
{
char *p;
@@ -257,6 +285,15 @@ static int __init policy_setup(char *str)
}
__setup("ima_policy=", policy_setup);
+int ima_default_appraise_policy_setup(const char *str,
+ struct ima_policy_setup_data *setup_data)
+{
+ /* Currently unused. It will be implemented after namespacing ima
+ * policy, when global variables are removed.
+ */
+ return 1;
+}
+
static int __init default_appraise_policy_setup(char *str)
{
ima_use_appraise_tcb = true;