diff options
Diffstat (limited to 'fs/gfs2')
-rw-r--r-- | fs/gfs2/ops_file.c | 2 | ||||
-rw-r--r-- | fs/gfs2/ops_vm.c | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/fs/gfs2/ops_file.c b/fs/gfs2/ops_file.c index 1a5e8e893d75..bad0b24cb773 100644 --- a/fs/gfs2/ops_file.c +++ b/fs/gfs2/ops_file.c | |||
@@ -364,6 +364,8 @@ static int gfs2_mmap(struct file *file, struct vm_area_struct *vma) | |||
364 | else | 364 | else |
365 | vma->vm_ops = &gfs2_vm_ops_private; | 365 | vma->vm_ops = &gfs2_vm_ops_private; |
366 | 366 | ||
367 | vma->vm_flags |= VM_CAN_INVALIDATE; | ||
368 | |||
367 | gfs2_glock_dq_uninit(&i_gh); | 369 | gfs2_glock_dq_uninit(&i_gh); |
368 | 370 | ||
369 | return error; | 371 | return error; |
diff --git a/fs/gfs2/ops_vm.c b/fs/gfs2/ops_vm.c index 404b7cc9f8c4..d5a98cbfebdc 100644 --- a/fs/gfs2/ops_vm.c +++ b/fs/gfs2/ops_vm.c | |||
@@ -138,6 +138,8 @@ static struct page *gfs2_sharewrite_nopage(struct vm_area_struct *area, | |||
138 | if (alloc_required) { | 138 | if (alloc_required) { |
139 | error = alloc_page_backing(ip, result); | 139 | error = alloc_page_backing(ip, result); |
140 | if (error) { | 140 | if (error) { |
141 | if (area->vm_flags & VM_CAN_INVALIDATE) | ||
142 | unlock_page(result); | ||
141 | page_cache_release(result); | 143 | page_cache_release(result); |
142 | result = NULL; | 144 | result = NULL; |
143 | goto out; | 145 | goto out; |