diff options
author | Mark Fortescue <mark@mtfhpc.demon.co.uk> | 2007-07-31 05:03:11 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2007-07-31 05:03:11 -0400 |
commit | da4e9fea85ea42c9c6ce163a85d5164efbec31a2 (patch) | |
tree | b146756eda55bbfecc49465dbf49ec320624496b /arch/sparc/mm/sun4c.c | |
parent | 2fa3195d72f7d0cfb4dcb2b0dfa265ed0fa5cfa3 (diff) |
[SPARC]: Fix exec failures on sun4c.
This deals with a sun4c issue caused by commit b6a2fea39318e43fee84fa7b0b90d68bed92d2ba:
mm: variable length argument support.
The new way the code works means that sun4c_update_mmu_cache gets
called before a context has been selected, which results in invalid
operation of the underling mm code.
Simply ignoring update requests when there is no valid context solves
the problem.
Signed-off-by Mark Fortescue <mark@mtfhpc.demon.co.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/mm/sun4c.c')
-rw-r--r-- | arch/sparc/mm/sun4c.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/sparc/mm/sun4c.c b/arch/sparc/mm/sun4c.c index a57a366e339a..79d60d86f6f8 100644 --- a/arch/sparc/mm/sun4c.c +++ b/arch/sparc/mm/sun4c.c | |||
@@ -1999,6 +1999,9 @@ void sun4c_update_mmu_cache(struct vm_area_struct *vma, unsigned long address, p | |||
1999 | unsigned long flags; | 1999 | unsigned long flags; |
2000 | int pseg; | 2000 | int pseg; |
2001 | 2001 | ||
2002 | if (vma->vm_mm->context == NO_CONTEXT) | ||
2003 | return; | ||
2004 | |||
2002 | local_irq_save(flags); | 2005 | local_irq_save(flags); |
2003 | address &= PAGE_MASK; | 2006 | address &= PAGE_MASK; |
2004 | if ((pseg = sun4c_get_segmap(address)) == invalid_segment) { | 2007 | if ((pseg = sun4c_get_segmap(address)) == invalid_segment) { |