WSL2-Linux-Kernel/arch/riscv
Liao Chang 4211742f0f RISC-V: use memcpy for kexec_file mode
[ Upstream commit b7fb4d78a6 ]

The pointer to buffer loading kernel binaries is in kernel space for
kexec_fil mode, When copy_from_user copies data from pointer to a block
of memory, it checkes that the pointer is in the user space range, on
RISCV-V that is:

static inline bool __access_ok(unsigned long addr, unsigned long size)
{
	return size <= TASK_SIZE && addr <= TASK_SIZE - size;
}

and TASK_SIZE is 0x4000000000 for 64-bits, which now causes
copy_from_user to reject the access of the field 'buf' of struct
kexec_segment that is in range [CONFIG_PAGE_OFFSET - VMALLOC_SIZE,
CONFIG_PAGE_OFFSET), is invalid user space pointer.

This patch fixes this issue by skipping access_ok(), use mempcy() instead.

Signed-off-by: Liao Chang <liaochang1@huawei.com>
Link: https://lore.kernel.org/r/20220408100914.150110-3-lizhengyu3@huawei.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-06-14 18:36:15 +02:00
..
boot riscv: dts: sifive: fu540-c000: align dma node name with dtschema 2022-05-25 09:57:34 +02:00
configs riscv: fix nommu_k210_sdcard_defconfig 2022-03-02 11:48:08 +01:00
errata riscv: skip errata_cip_453.o if CONFIG_ERRATA_SIFIVE_CIP_453 is disabled 2021-06-01 21:16:41 -07:00
include riscv: Move alternative length validation into subsection 2022-06-09 10:22:27 +02:00
kernel RISC-V: use memcpy for kexec_file mode 2022-06-14 18:36:15 +02:00
lib riscv: Fixed misaligned memory access. Fixed pointer comparison. 2022-04-13 20:59:09 +02:00
mm RISC-V: relocate DTB if it's outside memory region 2022-05-12 12:30:04 +02:00
net riscv, bpf: Fix potential NULL dereference 2021-10-28 08:14:30 -07:00
Kbuild riscv: Allow device trees to be built into the kernel 2020-05-18 11:38:05 -07:00
Kconfig riscv: Get rid of MAXPHYSMEM configs 2022-01-27 11:02:49 +01:00
Kconfig.debug RISC-V: Remove EARLY_PRINTK support 2018-12-17 10:23:46 -08:00
Kconfig.erratas riscv: alternative only works on !XIP_KERNEL 2022-03-16 14:23:42 +01:00
Kconfig.socs riscv: alternative only works on !XIP_KERNEL 2022-03-16 14:23:42 +01:00
Makefile riscv: fix build with binutils 2.38 2022-02-16 12:56:17 +01:00