@@ -2,17 +2,13 @@
#ifndef _ASM_POWERPC_IMA_H
#define _ASM_POWERPC_IMA_H
+#include <linux/kexec.h>
+
struct kimage;
int ima_get_kexec_buffer(void **addr, size_t *size);
int ima_free_kexec_buffer(void);
-#ifdef CONFIG_IMA
-void remove_ima_buffer(void *fdt, int chosen_node);
-#else
-static inline void remove_ima_buffer(void *fdt, int chosen_node) {}
-#endif
-
#ifdef CONFIG_IMA_KEXEC
int arch_ima_add_kexec_buffer(struct kimage *image, unsigned long load_addr,
size_t size);
@@ -61,32 +61,6 @@ int ima_free_kexec_buffer(void)
return memblock_free(addr, size);
}
-/**
- * remove_ima_buffer - remove the IMA buffer property and reservation from @fdt
- *
- * @fdt: Flattened Device Tree to update
- * @chosen_node: Offset to the chosen node in the device tree
- *
- * The IMA measurement buffer is of no use to a subsequent kernel, so we always
- * remove it from the device tree.
- */
-void remove_ima_buffer(void *fdt, int chosen_node)
-{
- int ret;
- unsigned long addr;
- size_t size;
-
- ret = get_ima_kexec_buffer(fdt, chosen_node, &addr, &size);
- if (ret)
- return;
-
- fdt_delprop(fdt, chosen_node, "linux,ima-kexec-buffer");
-
- ret = delete_fdt_mem_rsv(fdt, addr, size);
- if (!ret)
- pr_debug("Removed old IMA buffer reservation.\n");
-}
-
#ifdef CONFIG_IMA_KEXEC
static int get_addr_size_cells(int *addr_cells, int *size_cells)
{
@@ -63,3 +63,29 @@ int get_ima_kexec_buffer(void *fdt, int chosen_node,
return 0;
}
+
+/**
+ * remove_ima_buffer - remove the IMA buffer property and reservation from @fdt
+ *
+ * @fdt: Flattened Device Tree to update
+ * @chosen_node: Offset to the chosen node in the device tree
+ *
+ * The IMA measurement buffer is of no use to a subsequent kernel, so we always
+ * remove it from the device tree.
+ */
+void remove_ima_buffer(void *fdt, int chosen_node)
+{
+ int ret;
+ unsigned long addr;
+ size_t size;
+
+ ret = get_ima_kexec_buffer(fdt, chosen_node, &addr, &size);
+ if (ret)
+ return;
+
+ fdt_delprop(fdt, chosen_node, "linux,ima-kexec-buffer");
+
+ ret = delete_fdt_mem_rsv(fdt, addr, size);
+ if (!ret)
+ pr_debug("Removed old IMA buffer reservation.\n");
+}
@@ -410,12 +410,14 @@ static inline int kexec_crash_loaded(void) { return 0; }
#if defined(CONFIG_OF_FLATTREE) && defined(CONFIG_HAVE_IMA_KEXEC)
extern int get_ima_kexec_buffer(void *fdt, int chosen_node,
unsigned long *addr, size_t *size);
+extern void remove_ima_buffer(void *fdt, int chosen_node);
#else
static inline int get_ima_kexec_buffer(void *fdt, int chosen_node,
unsigned long *addr, size_t *size)
{
return -EOPNOTSUPP;
}
+static inline void remove_ima_buffer(void *fdt, int chosen_node) {}
#endif /* CONFIG_OF_FLATTREE && CONFIG_HAVE_IMA_KEXEC */
#if defined(CONFIG_OF_FLATTREE) && defined(CONFIG_KEXEC_FILE)