Re: [PATCH v15 09/10] arm64: Call kmalloc() to allocate DTB buffer
From: Will Deacon <will@kernel.org>
Date: 2021-01-27 18:44:31
Also in:
linux-arm-kernel, linux-devicetree, linux-integrity, lkml
On Wed, Jan 27, 2021 at 09:59:38AM -0800, Lakshmi Ramasubramanian wrote:
On 1/27/21 8:52 AM, Will Deacon wrote: Hi Will,quoted
On Fri, Jan 15, 2021 at 09:30:16AM -0800, Lakshmi Ramasubramanian wrote:quoted
create_dtb() function allocates kernel virtual memory for the device tree blob (DTB). This is not consistent with other architectures, such as powerpc, which calls kmalloc() for allocating memory for the DTB. Call kmalloc() to allocate memory for the DTB, and kfree() to free the allocated memory. Co-developed-by: Prakhar Srivastava <redacted> Signed-off-by: Prakhar Srivastava <redacted> Signed-off-by: Lakshmi Ramasubramanian <redacted> --- arch/arm64/kernel/machine_kexec_file.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)diff --git a/arch/arm64/kernel/machine_kexec_file.c b/arch/arm64/kernel/machine_kexec_file.c index 7de9c47dee7c..51c40143d6fa 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); + kfree(image->arch.dtb); image->arch.dtb = NULL; vfree(image->arch.elf_headers);@@ -59,19 +59,21 @@ static int create_dtb(struct kimage *image, + cmdline_len + DTB_EXTRA_SPACE; for (;;) { - buf = vmalloc(buf_size); + buf = kmalloc(buf_size, GFP_KERNEL);Is there a functional need for this patch? I build the 'dtbs' target just now and sdm845-db845c.dtb is approaching 100K, which feels quite large for kmalloc().Changing the allocation from vmalloc() to kmalloc() would help us further consolidate the DTB setup code for powerpc and arm64.
Ok, but at the risk of allocation failure. Can powerpc use vmalloc() instead? Will