[PATCH] Flushing cache at exit_mmap

From: NIIBE Yutaka (gniibe@chroot.org)
Date: Thu Jul 20 2000 - 22:57:26 EST


Stuart Menefy found that there's something wrong in cache handling
(for SuperH (SH-4) port). It's not SuperH specific, but generic issue.

As he seems to be off-line these days, I submit the patch on behalf of
him. If there's something wrong, it's due to me.

SH-4 has virtually indexed and physically tagged cache, which has
alias problem to be handled by kernel. When process exits, we need to
flush the caches used by the process. If we don't do flush here,
something wrong will be happened later, because of cache aliases, when
the pages will be reused. The page will be polluted by old cache data
in unrelated way.

I don't know if TLB flush is needed, but every code has TLB flush, it
is added.

--- linux-2.4.0-test5-pre3/mm/mmap.c Thu Jul 20 14:59:44 2000
+++ linux/mm/mmap.c Thu Jul 20 14:37:42 2000
@@ -864,7 +864,9 @@
                 }
                 mm->map_count--;
                 remove_shared_vm_struct(mpnt);
+ flush_cache_range(mm, start, end);
                 zap_page_range(mm, start, size);
+ flush_tlb_range(mm, start, end);
                 if (mpnt->vm_file)
                         fput(mpnt->vm_file);
                 kmem_cache_free(vm_area_cachep, mpnt);

-- 

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sun Jul 23 2000 - 21:00:14 EST