diff options
author | Jisheng Zhang <jszhang@kernel.org> | 2021-06-18 22:01:36 +0800 |
---|---|---|
committer | Palmer Dabbelt <palmerdabbelt@google.com> | 2021-06-18 21:09:56 -0700 |
commit | 314b781706e337b8cbde98cfefd3975863e032f2 (patch) | |
tree | 4516ad88a70b3682e80b7a34609368363f4e5c1f /arch | |
parent | 01f5315dd7327b53a5f538b74a2338a651b1832d (diff) | |
download | linux-stable-314b781706e337b8cbde98cfefd3975863e032f2.tar.gz linux-stable-314b781706e337b8cbde98cfefd3975863e032f2.tar.bz2 linux-stable-314b781706e337b8cbde98cfefd3975863e032f2.zip |
riscv: kasan: Fix MODULES_VADDR evaluation due to local variables' name
commit 2bfc6cd81bd1 ("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: 2bfc6cd81bd1 ("riscv: Move kernel mapping outside of linear mapping")
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/riscv/mm/kasan_init.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/riscv/mm/kasan_init.c b/arch/riscv/mm/kasan_init.c index 9daacae93e33..a0d9e4ace331 100644 --- a/arch/riscv/mm/kasan_init.c +++ b/arch/riscv/mm/kasan_init.c @@ -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; |