aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2009-09-11 12:33:12 -0400
committerChris Mason <chris.mason@oracle.com>2009-09-11 13:31:08 -0400
commit50a9b214bc6c052caa05a210ebfc1bdf0d7085b2 (patch)
treec5ae2e6a99778f237bdc88eb7157f7c4a82a2e54 /fs/btrfs
parenta1ed835e1ab5795f91b198d08c43e2f56848dcf3 (diff)
Btrfs: fix btrfs page_mkwrite to return locked page
This closes a whole where the page may be written before the page_mkwrite caller has a chance to dirty it (thanks to Nick Piggin) Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs')
-rw-r--r--fs/btrfs/inode.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 233fe6f26120..c846482e7985 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -4552,11 +4552,14 @@ again:
4552 } 4552 }
4553 ClearPageChecked(page); 4553 ClearPageChecked(page);
4554 set_page_dirty(page); 4554 set_page_dirty(page);
4555 SetPageUptodate(page);
4555 4556
4556 BTRFS_I(inode)->last_trans = root->fs_info->generation + 1; 4557 BTRFS_I(inode)->last_trans = root->fs_info->generation + 1;
4557 unlock_extent(io_tree, page_start, page_end, GFP_NOFS); 4558 unlock_extent(io_tree, page_start, page_end, GFP_NOFS);
4558 4559
4559out_unlock: 4560out_unlock:
4561 if (!ret)
4562 return VM_FAULT_LOCKED;
4560 unlock_page(page); 4563 unlock_page(page);
4561out: 4564out:
4562 return ret; 4565 return ret;