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 213ca1f5340..13e013b1270 100644 --- a/mm/filemap_xip.c +++ b/mm/filemap_xip.c @@ -304,6 +304,7 @@ out:  static const struct vm_operations_struct xip_file_vm_ops = {  	.fault	= xip_file_fault, +	.page_mkwrite	= filemap_page_mkwrite,  };  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,  	loff_t pos;  	ssize_t ret; +	sb_start_write(inode->i_sb); +  	mutex_lock(&inode->i_mutex);  	if (!access_ok(VERIFY_READ, buf, len)) { @@ -411,8 +414,6 @@ xip_file_write(struct file *filp, const char __user *buf, size_t len,  	pos = *ppos;  	count = len; -	vfs_check_frozen(inode->i_sb, SB_FREEZE_WRITE); -  	/* We can write back this queue in page reclaim */  	current->backing_dev_info = mapping->backing_dev_info; @@ -436,6 +437,7 @@ xip_file_write(struct file *filp, const char __user *buf, size_t len,  	current->backing_dev_info = NULL;   out_up:  	mutex_unlock(&inode->i_mutex); +	sb_end_write(inode->i_sb);  	return ret;  }  EXPORT_SYMBOL_GPL(xip_file_write);  |