diff options
Diffstat (limited to 'mm/filemap_xip.c')
-rw-r--r-- | mm/filemap_xip.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/mm/filemap_xip.c b/mm/filemap_xip.c index 213ca1f53409..13e013b1270c 100644 --- a/mm/filemap_xip.c +++ b/mm/filemap_xip.c | |||
@@ -304,6 +304,7 @@ out: | |||
304 | 304 | ||
305 | static const struct vm_operations_struct xip_file_vm_ops = { | 305 | static const struct vm_operations_struct xip_file_vm_ops = { |
306 | .fault = xip_file_fault, | 306 | .fault = xip_file_fault, |
307 | .page_mkwrite = filemap_page_mkwrite, | ||
307 | }; | 308 | }; |
308 | 309 | ||
309 | int xip_file_mmap(struct file * file, struct vm_area_struct * vma) | 310 | int xip_file_mmap(struct file * file, struct vm_area_struct * vma) |
@@ -401,6 +402,8 @@ xip_file_write(struct file *filp, const char __user *buf, size_t len, | |||
401 | loff_t pos; | 402 | loff_t pos; |
402 | ssize_t ret; | 403 | ssize_t ret; |
403 | 404 | ||
405 | sb_start_write(inode->i_sb); | ||
406 | |||
404 | mutex_lock(&inode->i_mutex); | 407 | mutex_lock(&inode->i_mutex); |
405 | 408 | ||
406 | if (!access_ok(VERIFY_READ, buf, len)) { | 409 | if (!access_ok(VERIFY_READ, buf, len)) { |
@@ -411,8 +414,6 @@ xip_file_write(struct file *filp, const char __user *buf, size_t len, | |||
411 | pos = *ppos; | 414 | pos = *ppos; |
412 | count = len; | 415 | count = len; |
413 | 416 | ||
414 | vfs_check_frozen(inode->i_sb, SB_FREEZE_WRITE); | ||
415 | |||
416 | /* We can write back this queue in page reclaim */ | 417 | /* We can write back this queue in page reclaim */ |
417 | current->backing_dev_info = mapping->backing_dev_info; | 418 | current->backing_dev_info = mapping->backing_dev_info; |
418 | 419 | ||
@@ -436,6 +437,7 @@ xip_file_write(struct file *filp, const char __user *buf, size_t len, | |||
436 | current->backing_dev_info = NULL; | 437 | current->backing_dev_info = NULL; |
437 | out_up: | 438 | out_up: |
438 | mutex_unlock(&inode->i_mutex); | 439 | mutex_unlock(&inode->i_mutex); |
440 | sb_end_write(inode->i_sb); | ||
439 | return ret; | 441 | return ret; |
440 | } | 442 | } |
441 | EXPORT_SYMBOL_GPL(xip_file_write); | 443 | EXPORT_SYMBOL_GPL(xip_file_write); |