From: Michael Halcrow The recent swap of grab_cache_page() with find_get_page() in ecryptfs_sync_page() missed the fact that we need a lock on the lower page. This patch replaces find_get_page() with find_lock_page() in order to make sure that this lock is obtained. Signed-off-by: Michael Halcrow Signed-off-by: Andrew Morton --- fs/ecryptfs/mmap.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff -puN fs/ecryptfs/mmap.c~ecryptfs-grab-lock-on-lower_page-in-ecryptfs_sync_page fs/ecryptfs/mmap.c --- a/fs/ecryptfs/mmap.c~ecryptfs-grab-lock-on-lower_page-in-ecryptfs_sync_page +++ a/fs/ecryptfs/mmap.c @@ -766,9 +766,9 @@ static void ecryptfs_sync_page(struct pa lower_inode = ecryptfs_inode_to_lower(inode); /* NOTE: Recently swapped with grab_cache_page(), since * sync_page() just makes sure that pending I/O gets done. */ - lower_page = find_get_page(lower_inode->i_mapping, page->index); + lower_page = find_lock_page(lower_inode->i_mapping, page->index); if (!lower_page) { - ecryptfs_printk(KERN_DEBUG, "find_get_page failed\n"); + ecryptfs_printk(KERN_DEBUG, "find_lock_page failed\n"); return; } lower_page->mapping->a_ops->sync_page(lower_page); _