[commits] [git] batman-adv branch, linux, updated. 5ff6d9f73e1a8751740bc537732d05a99dfbc01b

postmaster at open-mesh.net postmaster at open-mesh.net
Mon Nov 9 02:02:07 UTC 2009

The following commit has been merged in the linux branch:
commit 964f7e5a56814b32c727821de77d22bd7ef782bc
Author: Paul Mundt <lethal at linux-sh.org>
Date:   Tue Oct 13 11:18:34 2009 +0900

    sh: force dcache flush if dcache_dirty bit set.
    This too follows the ARM change, given that the issue at hand applies to
    all platforms that implement lazy D-cache writeback.
    This fixes up the case when a page mapping disappears between the
    flush_dcache_page() call (when PG_dcache_dirty is set for the page) and
    the update_mmu_cache() call -- such as in the case of swap cache being
    freed early. This kills off the mapping test in update_mmu_cache() and
    switches to simply testing for PG_dcache_dirty.
    Reported-by: Nitin Gupta <ngupta at vflare.org>
    Reported-by: Hugh Dickins <hugh.dickins at tiscali.co.uk>
    Signed-off-by: Paul Mundt <lethal at linux-sh.org>

diff --git a/arch/sh/mm/cache.c b/arch/sh/mm/cache.c
index 35c37b7..5e1091b 100644
--- a/arch/sh/mm/cache.c
+++ b/arch/sh/mm/cache.c
@@ -128,7 +128,7 @@ void __update_cache(struct vm_area_struct *vma,
 	page = pfn_to_page(pfn);
-	if (pfn_valid(pfn) && page_mapping(page)) {
+	if (pfn_valid(pfn)) {
 		int dirty = test_and_clear_bit(PG_dcache_dirty, &page->flags);
 		if (dirty) {
 			unsigned long addr = (unsigned long)page_address(page);


More information about the commits mailing list