diff options
author | Andrew Morton <akpm@linux-foundation.org> | 2015-01-17 11:24:32 +1100 |
---|---|---|
committer | Stephen Rothwell <sfr@canb.auug.org.au> | 2015-01-19 18:32:10 +1100 |
commit | a27a5cb7c388a8a782f645a0f3e77c1723c91fe6 (patch) | |
tree | b605da182850b729b1d36347600f19d1f620b233 | |
parent | 3f0a4c63532b1d5e5c692b46effc6ebff0806bdc (diff) |
mm-allow-page-fault-handlers-to-perform-the-cow-fix
Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: Matthew Wilcox <matthew.r.wilcox@intel.com>
Cc: Andreas Dilger <andreas.dilger@intel.com>
Cc: Boaz Harrosh <boaz@plexistor.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Dave Chinner <david@fromorbit.com>
Cc: Jan Kara <jack@suse.cz>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Ross Zwisler <ross.zwisler@linux.intel.com>
Cc: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-rw-r--r-- | mm/memory.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/mm/memory.c b/mm/memory.c index 82b60936dd33..a02b366ad7ba 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2894,7 +2894,11 @@ static int do_cow_fault(struct mm_struct *mm, struct vm_area_struct *vma, unlock_page(fault_page); page_cache_release(fault_page); } else { - mutex_unlock(&vma->vm_file->f_mapping->i_mmap_mutex); + /* + * DAX doesn't have a page to lock, so it uses + * i_mmap_lock() + */ + i_mmap_unlock_read(&vma->vm_file->f_mapping); } goto uncharge_out; } @@ -2906,7 +2910,11 @@ static int do_cow_fault(struct mm_struct *mm, struct vm_area_struct *vma, unlock_page(fault_page); page_cache_release(fault_page); } else { - mutex_unlock(&vma->vm_file->f_mapping->i_mmap_mutex); + /* + * DAX doesn't have a page to lock, so it uses + * i_mmap_lock() + */ + i_mmap_unlock_read(&vma->vm_file->f_mapping); } return ret; uncharge_out: |