kernel: Fix MIPS bounds check virt_addr_valid
This is pending to get into the upstream kernel. This fixes a bug in the upstream kernel which was added to stable some time ago. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
parent
d5a38725f8
commit
418f826c2c
@ -0,0 +1,33 @@
|
||||
From 415e0feec4f927af0059f72a6831f6c5a104f0fc Mon Sep 17 00:00:00 2001
|
||||
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Date: Mon, 17 Jun 2019 00:13:08 +0200
|
||||
Subject: [PATCH] MIPS: Fix bounds check virt_addr_valid
|
||||
|
||||
The bounds check used the uninitialized variable vaddr, it should use
|
||||
the given parameter kaddr instead. When using the uninitialized value
|
||||
the compiler assumed it to be 0 and optimized this function to just
|
||||
return 0 in all cases.
|
||||
|
||||
This should make the function check the range of the given address and
|
||||
only do the page map check in case it is in the expected range of
|
||||
virtual addresses.
|
||||
|
||||
Fixes: 074a1e1167af ("MIPS: Bounds check virt_addr_valid")
|
||||
Cc: stable@vger.kernel.org # v4.12+
|
||||
Cc: Paul Burton <paul.burton@mips.com>
|
||||
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
---
|
||||
arch/mips/mm/mmap.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/mips/mm/mmap.c
|
||||
+++ b/arch/mips/mm/mmap.c
|
||||
@@ -203,7 +203,7 @@ unsigned long arch_randomize_brk(struct
|
||||
|
||||
int __virt_addr_valid(const volatile void *kaddr)
|
||||
{
|
||||
- unsigned long vaddr = (unsigned long)vaddr;
|
||||
+ unsigned long vaddr = (unsigned long)kaddr;
|
||||
|
||||
if ((vaddr < PAGE_OFFSET) || (vaddr >= MAP_BASE))
|
||||
return 0;
|
@ -0,0 +1,33 @@
|
||||
From 415e0feec4f927af0059f72a6831f6c5a104f0fc Mon Sep 17 00:00:00 2001
|
||||
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Date: Mon, 17 Jun 2019 00:13:08 +0200
|
||||
Subject: [PATCH] MIPS: Fix bounds check virt_addr_valid
|
||||
|
||||
The bounds check used the uninitialized variable vaddr, it should use
|
||||
the given parameter kaddr instead. When using the uninitialized value
|
||||
the compiler assumed it to be 0 and optimized this function to just
|
||||
return 0 in all cases.
|
||||
|
||||
This should make the function check the range of the given address and
|
||||
only do the page map check in case it is in the expected range of
|
||||
virtual addresses.
|
||||
|
||||
Fixes: 074a1e1167af ("MIPS: Bounds check virt_addr_valid")
|
||||
Cc: stable@vger.kernel.org # v4.12+
|
||||
Cc: Paul Burton <paul.burton@mips.com>
|
||||
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
---
|
||||
arch/mips/mm/mmap.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/arch/mips/mm/mmap.c
|
||||
+++ b/arch/mips/mm/mmap.c
|
||||
@@ -203,7 +203,7 @@ unsigned long arch_randomize_brk(struct
|
||||
|
||||
int __virt_addr_valid(const volatile void *kaddr)
|
||||
{
|
||||
- unsigned long vaddr = (unsigned long)vaddr;
|
||||
+ unsigned long vaddr = (unsigned long)kaddr;
|
||||
|
||||
if ((vaddr < PAGE_OFFSET) || (vaddr >= MAP_BASE))
|
||||
return 0;
|
Loading…
Reference in New Issue
Block a user