Unverified Commit 314b7817 authored by Jisheng Zhang's avatar Jisheng Zhang Committed by Palmer Dabbelt
Browse files

riscv: kasan: Fix MODULES_VADDR evaluation due to local variables' name



commit 2bfc6cd8 ("riscv: Move kernel mapping outside of linear
mapping") makes use of MODULES_VADDR to populate kernel, BPF, modules
mapping. Currently, MODULES_VADDR is defined as below for RV64:

| #define MODULES_VADDR   (PFN_ALIGN((unsigned long)&_end) - SZ_2G)

But kasan_init() has two local variables which are also named as _start,
_end, so MODULES_VADDR is evaluated with the local variable _end
rather than the global "_end" as we expected. Fix this issue by
renaming the two local variables.

Fixes: 2bfc6cd8 ("riscv: Move kernel mapping outside of linear mapping")
Signed-off-by: default avatarJisheng Zhang <jszhang@kernel.org>
Signed-off-by: default avatarPalmer Dabbelt <palmerdabbelt@google.com>
parent 01f5315d
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -169,7 +169,7 @@ static void __init kasan_shallow_populate(void *start, void *end)

void __init kasan_init(void)
{
	phys_addr_t _start, _end;
	phys_addr_t p_start, p_end;
	u64 i;

	/*
@@ -189,9 +189,9 @@ void __init kasan_init(void)
			(void *)kasan_mem_to_shadow((void *)VMALLOC_END));

	/* Populate the linear mapping */
	for_each_mem_range(i, &_start, &_end) {
		void *start = (void *)__va(_start);
		void *end = (void *)__va(_end);
	for_each_mem_range(i, &p_start, &p_end) {
		void *start = (void *)__va(p_start);
		void *end = (void *)__va(p_end);

		if (start >= end)
			break;