--- v14
+++ v15
@@ -1,97 +1,82 @@
-arch_ima_add_kexec_buffer() defined in "arch/powerpc/kexec/ima.c"
-sets up the address and size of the IMA measurement list in
-the architecture specific fields in kimage struct. This function does not
-have architecture specific code, but is currently limited to powerpc.
+From: Rob Herring <robh@kernel.org>
-Move arch_ima_add_kexec_buffer() to ima.
+The architecture specific field, elfcorehdr_addr in struct kimage_arch,
+that holds the address of the buffer in memory for ELF core header for
+powerpc has a different name than the one used for arm64. This makes
+it hard to have a common code for setting up the device tree for
+kexec system call.
-Co-developed-by: Prakhar Srivastava <prsriva@linux.microsoft.com>
-Signed-off-by: Prakhar Srivastava <prsriva@linux.microsoft.com>
-Signed-off-by: Lakshmi Ramasubramanian <nramas@linux.microsoft.com>
-Acked-by: Mimi Zohar <zohar@linux.ibm.com>
+Rename elfcorehdr_addr to elf_headers_mem to align with arm64 name so
+common code can use it.
+
+Signed-off-by: Rob Herring <robh@kernel.org>
Reviewed-by: Thiago Jung Bauermann <bauerman@linux.ibm.com>
+Reviewed-by: Lakshmi Ramasubramanian <nramas@linux.microsoft.com>
---
- arch/powerpc/include/asm/ima.h | 3 ---
- arch/powerpc/kexec/ima.c | 17 -----------------
- security/integrity/ima/ima_kexec.c | 21 +++++++++++++++++++++
- 3 files changed, 21 insertions(+), 20 deletions(-)
+ arch/powerpc/include/asm/kexec.h | 2 +-
+ arch/powerpc/kexec/file_load.c | 4 ++--
+ arch/powerpc/kexec/file_load_64.c | 4 ++--
+ 3 files changed, 5 insertions(+), 5 deletions(-)
-diff --git a/arch/powerpc/include/asm/ima.h b/arch/powerpc/include/asm/ima.h
-index ead488cf3981..51f64fd06c19 100644
---- a/arch/powerpc/include/asm/ima.h
-+++ b/arch/powerpc/include/asm/ima.h
-@@ -14,9 +14,6 @@ static inline void remove_ima_buffer(void *fdt, int chosen_node) {}
- #endif
+diff --git a/arch/powerpc/include/asm/kexec.h b/arch/powerpc/include/asm/kexec.h
+index 55d6ede30c19..dbf09d2f36d0 100644
+--- a/arch/powerpc/include/asm/kexec.h
++++ b/arch/powerpc/include/asm/kexec.h
+@@ -108,7 +108,7 @@ struct kimage_arch {
+ unsigned long backup_start;
+ void *backup_buf;
- #ifdef CONFIG_IMA_KEXEC
--int arch_ima_add_kexec_buffer(struct kimage *image, unsigned long load_addr,
-- size_t size);
--
- int setup_ima_buffer(const struct kimage *image, void *fdt, int chosen_node);
- #else
- static inline int setup_ima_buffer(const struct kimage *image, void *fdt,
-diff --git a/arch/powerpc/kexec/ima.c b/arch/powerpc/kexec/ima.c
-index 720e50e490b6..7378d59c0c1e 100644
---- a/arch/powerpc/kexec/ima.c
-+++ b/arch/powerpc/kexec/ima.c
-@@ -128,23 +128,6 @@ void remove_ima_buffer(void *fdt, int chosen_node)
+- unsigned long elfcorehdr_addr;
++ unsigned long elf_headers_mem;
+ unsigned long elf_headers_sz;
+ void *elf_headers;
+
+diff --git a/arch/powerpc/kexec/file_load.c b/arch/powerpc/kexec/file_load.c
+index 9a232bc36c8f..e452b11df631 100644
+--- a/arch/powerpc/kexec/file_load.c
++++ b/arch/powerpc/kexec/file_load.c
+@@ -45,7 +45,7 @@ char *setup_kdump_cmdline(struct kimage *image, char *cmdline,
+ return NULL;
+
+ elfcorehdr_strlen = sprintf(cmdline_ptr, "elfcorehdr=0x%lx ",
+- image->arch.elfcorehdr_addr);
++ image->arch.elf_headers_mem);
+
+ if (elfcorehdr_strlen + cmdline_len > COMMAND_LINE_SIZE) {
+ pr_err("Appending elfcorehdr=<addr> exceeds cmdline size\n");
+@@ -263,7 +263,7 @@ int setup_new_fdt(const struct kimage *image, void *fdt,
+ * Avoid elfcorehdr from being stomped on in kdump kernel by
+ * setting up memory reserve map.
+ */
+- ret = fdt_add_mem_rsv(fdt, image->arch.elfcorehdr_addr,
++ ret = fdt_add_mem_rsv(fdt, image->arch.elf_headers_mem,
+ image->arch.elf_headers_sz);
+ if (ret) {
+ pr_err("Error reserving elfcorehdr memory: %s\n",
+diff --git a/arch/powerpc/kexec/file_load_64.c b/arch/powerpc/kexec/file_load_64.c
+index c69bcf9b547a..a05c19b3cc60 100644
+--- a/arch/powerpc/kexec/file_load_64.c
++++ b/arch/powerpc/kexec/file_load_64.c
+@@ -815,7 +815,7 @@ static int load_elfcorehdr_segment(struct kimage *image, struct kexec_buf *kbuf)
+ goto out;
+ }
+
+- image->arch.elfcorehdr_addr = kbuf->mem;
++ image->arch.elf_headers_mem = kbuf->mem;
+ image->arch.elf_headers_sz = headers_sz;
+ image->arch.elf_headers = headers;
+ out:
+@@ -851,7 +851,7 @@ int load_crashdump_segments_ppc64(struct kimage *image,
+ return ret;
+ }
+ pr_debug("Loaded elf core header at 0x%lx, bufsz=0x%lx memsz=0x%lx\n",
+- image->arch.elfcorehdr_addr, kbuf->bufsz, kbuf->memsz);
++ image->arch.elf_headers_mem, kbuf->bufsz, kbuf->memsz);
+
+ return 0;
}
-
- #ifdef CONFIG_IMA_KEXEC
--/**
-- * arch_ima_add_kexec_buffer - do arch-specific steps to add the IMA buffer
-- *
-- * Architectures should use this function to pass on the IMA buffer
-- * information to the next kernel.
-- *
-- * Return: 0 on success, negative errno on error.
-- */
--int arch_ima_add_kexec_buffer(struct kimage *image, unsigned long load_addr,
-- size_t size)
--{
-- image->arch.ima_buffer_addr = load_addr;
-- image->arch.ima_buffer_size = size;
--
-- return 0;
--}
--
- static int write_number(void *p, u64 value, int cells)
- {
- if (cells == 1) {
-diff --git a/security/integrity/ima/ima_kexec.c b/security/integrity/ima/ima_kexec.c
-index 121de3e04af2..95513c97ce8f 100644
---- a/security/integrity/ima/ima_kexec.c
-+++ b/security/integrity/ima/ima_kexec.c
-@@ -71,6 +71,27 @@ static int ima_dump_measurement_list(unsigned long *buffer_size, void **buffer,
- return ret;
- }
-
-+/**
-+ * arch_ima_add_kexec_buffer - do arch-specific steps to add the IMA buffer
-+ *
-+ * @image: kimage struct to set IMA buffer data
-+ * @load_addr: Starting address where IMA buffer is loaded at
-+ * @size: Number of bytes in the IMA buffer
-+ *
-+ * Architectures should use this function to pass on the IMA buffer
-+ * information to the next kernel.
-+ *
-+ * Return: 0 on success, negative errno on error.
-+ */
-+static int arch_ima_add_kexec_buffer(struct kimage *image,
-+ unsigned long load_addr, size_t size)
-+{
-+ image->arch.ima_buffer_addr = load_addr;
-+ image->arch.ima_buffer_size = size;
-+
-+ return 0;
-+}
-+
- /*
- * Called during kexec_file_load so that IMA can add a segment to the kexec
- * image for the measurement list for the next kernel.
--
-2.29.2
+2.30.0
_______________________________________________