summaryrefslogtreecommitdiffstats
path: root/arch/sh/mm
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2009-07-29 22:06:58 +0900
committerPaul Mundt <lethal@linux-sh.org>2009-07-29 22:06:58 +0900
commit3ed6e129390fb872c3b7e05a232e5d380fbdfb48 (patch)
treec6cf9564b735f85d0a37f64e239767ce86e40b36 /arch/sh/mm
parent9cef7492696a416663b4edb953a4eade8517ebeb (diff)
downloadlinux-stable-3ed6e129390fb872c3b7e05a232e5d380fbdfb48.tar.gz
linux-stable-3ed6e129390fb872c3b7e05a232e5d380fbdfb48.tar.bz2
linux-stable-3ed6e129390fb872c3b7e05a232e5d380fbdfb48.zip
sh: Handle a NULL vma in __update_tlb() for the fast-path.
The TLB miss fast-path presently calls in to update_mmu_cache() to set up the entry, and does so with a NULL vma. Check for vma validity in the __update_tlb() ptrace checks. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/mm')
-rw-r--r--arch/sh/mm/tlb-pteaex.c2
-rw-r--r--arch/sh/mm/tlb-sh3.c2
-rw-r--r--arch/sh/mm/tlb-sh4.c2
3 files changed, 3 insertions, 3 deletions
diff --git a/arch/sh/mm/tlb-pteaex.c b/arch/sh/mm/tlb-pteaex.c
index 9aabd313cede..409b7c2b4b9d 100644
--- a/arch/sh/mm/tlb-pteaex.c
+++ b/arch/sh/mm/tlb-pteaex.c
@@ -23,7 +23,7 @@ void __update_tlb(struct vm_area_struct *vma, unsigned long address, pte_t pte)
/*
* Handle debugger faulting in for debugee.
*/
- if (current->active_mm != vma->vm_mm)
+ if (vma && current->active_mm != vma->vm_mm)
return;
local_irq_save(flags);
diff --git a/arch/sh/mm/tlb-sh3.c b/arch/sh/mm/tlb-sh3.c
index 425f1f23cf93..ace8e6d2f59d 100644
--- a/arch/sh/mm/tlb-sh3.c
+++ b/arch/sh/mm/tlb-sh3.c
@@ -34,7 +34,7 @@ void __update_tlb(struct vm_area_struct *vma, unsigned long address, pte_t pte)
/*
* Handle debugger faulting in for debugee.
*/
- if (current->active_mm != vma->vm_mm)
+ if (vma && current->active_mm != vma->vm_mm)
return;
local_irq_save(flags);
diff --git a/arch/sh/mm/tlb-sh4.c b/arch/sh/mm/tlb-sh4.c
index 81199f1e5945..7d3c63e707a5 100644
--- a/arch/sh/mm/tlb-sh4.c
+++ b/arch/sh/mm/tlb-sh4.c
@@ -22,7 +22,7 @@ void __update_tlb(struct vm_area_struct *vma, unsigned long address, pte_t pte)
/*
* Handle debugger faulting in for debugee.
*/
- if (current->active_mm != vma->vm_mm)
+ if (vma && current->active_mm != vma->vm_mm)
return;
local_irq_save(flags);