--- /dev/null
+---
+ arch/arm/mm/fault-armv.c | 9 +++------
+ 1 files changed, 3 insertions(+), 6 deletions(-)
+
+Index: kernel-power-2.6.28/arch/arm/mm/fault-armv.c
+===================================================================
+--- kernel-power-2.6.28.orig/arch/arm/mm/fault-armv.c
++++ kernel-power-2.6.28/arch/arm/mm/fault-armv.c
+@@ -150,14 +150,11 @@
+
+ page = pfn_to_page(pfn);
+ mapping = page_mapping(page);
+- if (mapping) {
+ #ifndef CONFIG_SMP
+- int dirty = test_and_clear_bit(PG_dcache_dirty, &page->flags);
+-
+- if (dirty)
+- __flush_dcache_page(mapping, page);
++ if (test_and_clear_bit(PG_dcache_dirty, &page->flags))
++ __flush_dcache_page(mapping, page);
+ #endif
+-
++ if (mapping) {
+ if (cache_is_vivt())
+ make_coherent(mapping, vma, addr, pfn);
+ else if (vma->vm_flags & VM_EXEC)