From: Lakshmi Ramasubramanian <nramas@linux•microsoft.com>
To: zohar@linux•ibm.com, bauerman@linux•ibm.com, robh@kernel•org,
takahiro.akashi@linaro•org, gregkh@linuxfoundation•org,
will@kernel•org, joe@perches•com, catalin.marinas@arm•com,
mpe@ellerman•id.au
Cc: mark.rutland@arm•com, bhsharma@redhat•com, tao.li@vivo•com,
paulus@samba•org, vincenzo.frascino@arm•com,
frowand.list@gmail•com, sashal@kernel•org, masahiroy@kernel•org,
jmorris@namei•org, linux-arm-kernel@lists•infradead.org,
serge@hallyn•com, devicetree@vger•kernel.org,
pasha.tatashin@soleen•com, prsriva@linux•microsoft.com,
hsinyi@chromium•org, allison@lohutok•net,
christophe.leroy@c-s•fr, mbrugger@suse•com,
balajib@linux•microsoft.com, dmitry.kasatkin@gmail•com,
linux-kernel@vger•kernel.org, james.morse@arm•com,
linux-integrity@vger•kernel.org, linuxppc-dev@lists•ozlabs.org
Subject: [PATCH v16 10/12] arm64: Use OF alloc and free functions for FDT
Date: Thu, 4 Feb 2021 08:41:33 -0800 [thread overview]
Message-ID: <20210204164135.29856-11-nramas@linux.microsoft.com> (raw)
In-Reply-To: <20210204164135.29856-1-nramas@linux.microsoft.com>
of_alloc_and_init_fdt() and of_free_fdt() have been defined in
drivers/of/kexec.c to allocate and free memory for FDT.
Use of_alloc_and_init_fdt() and of_free_fdt() to allocate and
initialize the FDT, and to free the FDT respectively.
Signed-off-by: Lakshmi Ramasubramanian <nramas@linux•microsoft.com>
Suggested-by: Rob Herring <robh@kernel•org>
---
arch/arm64/kernel/machine_kexec_file.c | 37 +++++++-------------------
1 file changed, 10 insertions(+), 27 deletions(-)
diff --git a/arch/arm64/kernel/machine_kexec_file.c b/arch/arm64/kernel/machine_kexec_file.c
index 7da22bb7b9d5..7d6cc478f73c 100644
--- a/arch/arm64/kernel/machine_kexec_file.c
+++ b/arch/arm64/kernel/machine_kexec_file.c
@@ -29,7 +29,7 @@ const struct kexec_file_ops * const kexec_file_loaders[] = {
int arch_kimage_file_post_load_cleanup(struct kimage *image)
{
- vfree(image->arch.dtb);
+ of_free_fdt(image->arch.dtb);
image->arch.dtb = NULL;
vfree(image->arch.elf_headers);
@@ -57,36 +57,19 @@ static int create_dtb(struct kimage *image,
cmdline_len = cmdline ? strlen(cmdline) : 0;
buf_size = fdt_totalsize(initial_boot_params)
+ cmdline_len + DTB_EXTRA_SPACE;
-
- for (;;) {
- buf = vmalloc(buf_size);
- if (!buf)
- return -ENOMEM;
-
- /* duplicate a device tree blob */
- ret = fdt_open_into(initial_boot_params, buf, buf_size);
- if (ret)
- return -EINVAL;
-
- ret = of_kexec_setup_new_fdt(image, buf, initrd_load_addr,
+ buf = of_alloc_and_init_fdt(buf_size);
+ if (!buf)
+ return -ENOMEM;
+ ret = of_kexec_setup_new_fdt(image, buf, initrd_load_addr,
initrd_len, cmdline);
- if (ret) {
- vfree(buf);
- if (ret == -ENOMEM) {
- /* unlikely, but just in case */
- buf_size += DTB_EXTRA_SPACE;
- continue;
- } else {
- return ret;
- }
- }
-
+ if (!ret) {
/* trim it */
fdt_pack(buf);
*dtb = buf;
+ } else
+ of_free_fdt(buf);
- return 0;
- }
+ return ret;
}
static int prepare_elf_headers(void **addr, unsigned long *sz)
@@ -224,6 +207,6 @@ int load_other_segments(struct kimage *image,
out_err:
image->nr_segments = orig_segments;
- vfree(dtb);
+ of_free_fdt(dtb);
return ret;
}
--
2.30.0
next prev parent reply other threads:[~2021-02-04 17:03 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-04 16:41 [PATCH v16 00/12] Carry forward IMA measurement log on kexec on ARM64 Lakshmi Ramasubramanian
2021-02-04 16:41 ` [PATCH v16 01/12] powerpc: Rename kexec elfcorehdr_addr to elf_headers_mem Lakshmi Ramasubramanian
2021-02-04 16:41 ` [PATCH v16 02/12] of: Add a common kexec FDT setup function Lakshmi Ramasubramanian
2021-02-04 16:41 ` [PATCH v16 03/12] arm64: Use common of_kexec_setup_new_fdt() Lakshmi Ramasubramanian
2021-02-04 16:41 ` [PATCH v16 04/12] powerpc: " Lakshmi Ramasubramanian
2021-02-04 16:41 ` [PATCH v16 05/12] powerpc: Move ima buffer fields to struct kimage Lakshmi Ramasubramanian
2021-02-04 16:41 ` [PATCH v16 06/12] powerpc: Move arch independent ima kexec functions to drivers/of/kexec.c Lakshmi Ramasubramanian
2021-02-04 16:41 ` [PATCH v16 07/12] kexec: Use fdt_appendprop_addrrange() to add ima buffer to FDT Lakshmi Ramasubramanian
2021-02-04 16:41 ` [PATCH v16 08/12] powerpc: Delete unused function delete_fdt_mem_rsv() Lakshmi Ramasubramanian
2021-02-04 16:41 ` [PATCH v16 09/12] of: Define functions to allocate and free FDT Lakshmi Ramasubramanian
2021-02-04 16:41 ` Lakshmi Ramasubramanian [this message]
2021-02-04 18:00 ` [PATCH v16 10/12] arm64: Use OF alloc and free functions for FDT Will Deacon
2021-02-04 16:41 ` [PATCH v16 11/12] powerpc: Use OF alloc and free " Lakshmi Ramasubramanian
2021-02-04 19:26 ` Rob Herring
2021-02-04 23:23 ` Lakshmi Ramasubramanian
2021-02-04 23:36 ` Rob Herring
2021-02-04 23:42 ` Lakshmi Ramasubramanian
2021-02-08 4:12 ` Michael Ellerman
2021-02-04 16:41 ` [PATCH v16 12/12] arm64: Enable passing IMA log to next kernel on kexec Lakshmi Ramasubramanian
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210204164135.29856-11-nramas@linux.microsoft.com \
--to=nramas@linux$(echo .)microsoft.com \
--cc=allison@lohutok$(echo .)net \
--cc=balajib@linux$(echo .)microsoft.com \
--cc=bauerman@linux$(echo .)ibm.com \
--cc=bhsharma@redhat$(echo .)com \
--cc=catalin.marinas@arm$(echo .)com \
--cc=christophe.leroy@c-s$(echo .)fr \
--cc=devicetree@vger$(echo .)kernel.org \
--cc=dmitry.kasatkin@gmail$(echo .)com \
--cc=frowand.list@gmail$(echo .)com \
--cc=gregkh@linuxfoundation$(echo .)org \
--cc=hsinyi@chromium$(echo .)org \
--cc=james.morse@arm$(echo .)com \
--cc=jmorris@namei$(echo .)org \
--cc=joe@perches$(echo .)com \
--cc=linux-arm-kernel@lists$(echo .)infradead.org \
--cc=linux-integrity@vger$(echo .)kernel.org \
--cc=linux-kernel@vger$(echo .)kernel.org \
--cc=linuxppc-dev@lists$(echo .)ozlabs.org \
--cc=mark.rutland@arm$(echo .)com \
--cc=masahiroy@kernel$(echo .)org \
--cc=mbrugger@suse$(echo .)com \
--cc=mpe@ellerman$(echo .)id.au \
--cc=pasha.tatashin@soleen$(echo .)com \
--cc=paulus@samba$(echo .)org \
--cc=prsriva@linux$(echo .)microsoft.com \
--cc=robh@kernel$(echo .)org \
--cc=sashal@kernel$(echo .)org \
--cc=serge@hallyn$(echo .)com \
--cc=takahiro.akashi@linaro$(echo .)org \
--cc=tao.li@vivo$(echo .)com \
--cc=vincenzo.frascino@arm$(echo .)com \
--cc=will@kernel$(echo .)org \
--cc=zohar@linux$(echo .)ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox