mmap: sync_page bug, call sync_page on lower page, not unionfs page
authorYiannis Pericleous <yiannos@agora2.fsl.cs.sunysb.edu>
Sat, 19 May 2007 19:23:22 +0000 (15:23 -0400)
committerErez_Zadok <ezk@cs.sunysb.edu>
Wed, 4 Jul 2007 04:40:54 +0000 (00:40 -0400)
fs/unionfs/mmap.c

index 7d1e2f70af1e994a297994a79acdd35ec55032f9..93aba3ae81a8e335fa288ef53c7235c1cc22fae2 100644 (file)
@@ -269,7 +269,7 @@ void unionfs_sync_page(struct page *page)
        struct inode *inode;
        struct inode *lower_inode;
        struct page *lower_page;
-       struct address_space *mapping = page->mapping;
+       struct address_space *mapping;
 
        inode = page->mapping->host;
        lower_inode = unionfs_lower_inode(inode);
@@ -280,8 +280,9 @@ void unionfs_sync_page(struct page *page)
                goto out;
 
        /* do the actual sync */
+       mapping = lower_page->mapping;
        if (mapping && mapping->a_ops && mapping->a_ops->sync_page)
-               mapping->a_ops->sync_page(page);
+               mapping->a_ops->sync_page(lower_page);
 
        unlock_page(lower_page);        /* b/c grab_cache_page locked it */
        page_cache_release(lower_page); /* b/c grab_cache_page increased refcnt */