diff options
Diffstat (limited to 'fs/gfs2')
-rw-r--r-- | fs/gfs2/ops_file.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/gfs2/ops_file.c b/fs/gfs2/ops_file.c index 3b9e8de3500b..70b9b8548945 100644 --- a/fs/gfs2/ops_file.c +++ b/fs/gfs2/ops_file.c | |||
@@ -337,8 +337,9 @@ static int gfs2_allocate_page_backing(struct page *page) | |||
337 | * blocks allocated on disk to back that page. | 337 | * blocks allocated on disk to back that page. |
338 | */ | 338 | */ |
339 | 339 | ||
340 | static int gfs2_page_mkwrite(struct vm_area_struct *vma, struct page *page) | 340 | static int gfs2_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf) |
341 | { | 341 | { |
342 | struct page *page = vmf->page; | ||
342 | struct inode *inode = vma->vm_file->f_path.dentry->d_inode; | 343 | struct inode *inode = vma->vm_file->f_path.dentry->d_inode; |
343 | struct gfs2_inode *ip = GFS2_I(inode); | 344 | struct gfs2_inode *ip = GFS2_I(inode); |
344 | struct gfs2_sbd *sdp = GFS2_SB(inode); | 345 | struct gfs2_sbd *sdp = GFS2_SB(inode); |
@@ -412,6 +413,8 @@ out_unlock: | |||
412 | gfs2_glock_dq(&gh); | 413 | gfs2_glock_dq(&gh); |
413 | out: | 414 | out: |
414 | gfs2_holder_uninit(&gh); | 415 | gfs2_holder_uninit(&gh); |
416 | if (ret) | ||
417 | ret = VM_FAULT_SIGBUS; | ||
415 | return ret; | 418 | return ret; |
416 | } | 419 | } |
417 | 420 | ||