linux/drivers/of
Rob Herring 4a19f48bee of/kexec: Fix reading 32-bit "linux,initrd-{start,end}" values
commit e553ad8d79 upstream.

"linux,initrd-start" and "linux,initrd-end" can be 32-bit values even on
a 64-bit platform. Ideally, the size should be based on
'#address-cells', but that has never been enforced in the kernel's FDT
boot parsing code (early_init_dt_check_for_initrd()). Bootloader
behavior is known to vary. For example, kexec always writes these as
64-bit. The result of incorrectly reading 32-bit values is most likely
the reserved memory for the original initrd will still be reserved
for the new kernel. The original arm64 equivalent of this code failed to
release the initrd reserved memory in *all* cases.

Use of_read_number() to mirror the early_init_dt_check_for_initrd()
code.

Fixes: b30be4dc73 ("of: Add a common kexec FDT setup function")
Cc: stable@vger.kernel.org
Reported-by: Peter Maydell <peter.maydell@linaro.org>
Link: https://lore.kernel.org/r/20221128202440.1411895-1-robh@kernel.org
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2023-01-12 11:58:53 +01:00
..
unittest-data of: unittest: Statically apply overlays using fdtoverlay 2021-03-23 15:27:51 -06:00
address.c of: Move of_dma_set_restricted_buffer() into device.c 2021-08-23 06:32:02 -04:00
base.c of: base: Improve argument length mismatch error 2022-01-27 11:05:19 +01:00
device.c of: device: Fix missing of_node_put() in of_dma_set_restricted_buffer 2022-08-17 14:23:51 +02:00
dynamic.c of: Add missing 'Return' section in kerneldoc comments 2021-03-27 12:59:03 -06:00
fdt.c of: fdt: fix off-by-one error in unflatten_dt_nodes() 2022-09-23 14:15:46 +02:00
fdt_address.c of: Use SPDX license tag for DT files 2018-01-08 08:22:45 -06:00
irq.c of: Add missing 'Return' section in kerneldoc comments 2021-03-27 12:59:03 -06:00
Kconfig of: net: move of_net under net/ 2022-03-08 19:12:41 +01:00
kexec.c of/kexec: Fix reading 32-bit "linux,initrd-{start,end}" values 2023-01-12 11:58:53 +01:00
kobj.c of: Don't allow __of_attached_node_sysfs() without CONFIG_SYSFS 2021-08-23 13:52:09 -05:00
Makefile of: net: move of_net under net/ 2022-03-08 19:12:41 +01:00
of_numa.c of, numa: Validate some distance map rules 2018-11-08 12:44:34 -06:00
of_private.h of: Move of_dma_set_restricted_buffer() into device.c 2021-08-23 06:32:02 -04:00
of_reserved_mem.c memblock: exclude MEMBLOCK_NOMAP regions from kmemleak 2021-10-21 18:30:49 -10:00
overlay.c of: overlay: fix null pointer dereferencing in find_dup_cset_node_entry() and find_dup_cset_prop() 2022-12-31 13:14:19 +01:00
pdt.c of: Remove struct device_node.type pointer 2019-01-10 16:24:44 -06:00
platform.c iommu: Drop unnecessary of_iommu.h includes 2021-06-08 14:15:46 +02:00
property.c of: property: decrement node refcount in of_fwnode_get_reference_args() 2022-12-08 11:28:39 +01:00
resolver.c of: overlay: log the error cause on resolver failure 2020-03-02 11:32:44 -06:00
unittest.c of: unittest: 64 bit dma address test requires arch support 2022-01-27 11:04:12 +01:00