[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <AANLkTikIbI6hKoYSZlo6QDlyi2Qjxg287i-ilHpz1FF9@mail.gmail.com>
Date: Mon, 10 May 2010 16:07:57 +0300
From: "Kirill A. Shutemov" <kirill@...temov.name>
To: Russell King <linux@....linux.org.uk>
Cc: Catalin Marinas <catalin.marinas@....com>,
Siarhei Siamashka <siarhei.siamashka@...ia.com>,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org,
Aaro Koskinen <aaro.koskinen@...ia.com>
Subject: [PATCH] Handle instruction cache maintenance fault properly
Between "clean D line..." and "invalidate I line" operations in
v7_coherent_user_range(), the memory page may get swapped out.
And the fault on "invalidate I line" could not be properly handled
causing the oops.
The patch adds the missing handling for "instruction cache
maintenance fault". Let's handle it as translation fault.
Signed-off-by: Siarhei Siamashka <siarhei.siamashka@...ia.com>
Signed-off-by: Kirill A. Shutemov <kirill@...temov.name>
---
arch/arm/mm/fault.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
index 9d40c34..8924617 100644
--- a/arch/arm/mm/fault.c
+++ b/arch/arm/mm/fault.c
@@ -463,7 +463,7 @@ static struct fsr_info {
{ do_bad, SIGILL, BUS_ADRALN, "alignment exception" },
{ do_bad, SIGKILL, 0, "terminal exception" },
{ do_bad, SIGILL, BUS_ADRALN, "alignment exception" },
- { do_bad, SIGBUS, 0, "external abort on linefetch" },
+ { do_translation_fault, SIGSEGV, SEGV_MAPPER, "I-cache maintenance
fault" },
{ do_translation_fault, SIGSEGV, SEGV_MAPERR, "section translation
fault" },
{ do_bad, SIGBUS, 0, "external abort on linefetch" },
{ do_page_fault, SIGSEGV, SEGV_MAPERR, "page translation fault" },
--
1.7.0.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists