Commit ba6a46a0 authored by Steve French's avatar Steve French

[CIFS] small piece missing from previous patch

There were two i_size_writes in the new truncate
function - we missed one in the last patch.
Noticed by Shaggy when he reviewed.

Thank you Shaggy ...

CC: Shaggy <shaggy@us.ibm.com>
Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
parent 3677db10
...@@ -1139,15 +1139,17 @@ int cifs_vmtruncate(struct inode * inode, loff_t offset) ...@@ -1139,15 +1139,17 @@ int cifs_vmtruncate(struct inode * inode, loff_t offset)
struct address_space *mapping = inode->i_mapping; struct address_space *mapping = inode->i_mapping;
unsigned long limit; unsigned long limit;
spin_lock(&inode->i_lock);
if (inode->i_size < offset) if (inode->i_size < offset)
goto do_expand; goto do_expand;
/* /*
* truncation of in-use swapfiles is disallowed - it would cause * truncation of in-use swapfiles is disallowed - it would cause
* subsequent swapout to scribble on the now-freed blocks. * subsequent swapout to scribble on the now-freed blocks.
*/ */
if (IS_SWAPFILE(inode)) if (IS_SWAPFILE(inode)) {
spin_unlock(&inode->i_lock);
goto out_busy; goto out_busy;
spin_lock(&inode->i_lock); }
i_size_write(inode, offset); i_size_write(inode, offset);
spin_unlock(&inode->i_lock); spin_unlock(&inode->i_lock);
unmap_mapping_range(mapping, offset + PAGE_SIZE - 1, 0, 1); unmap_mapping_range(mapping, offset + PAGE_SIZE - 1, 0, 1);
...@@ -1156,12 +1158,16 @@ int cifs_vmtruncate(struct inode * inode, loff_t offset) ...@@ -1156,12 +1158,16 @@ int cifs_vmtruncate(struct inode * inode, loff_t offset)
do_expand: do_expand:
limit = current->signal->rlim[RLIMIT_FSIZE].rlim_cur; limit = current->signal->rlim[RLIMIT_FSIZE].rlim_cur;
if (limit != RLIM_INFINITY && offset > limit) if (limit != RLIM_INFINITY && offset > limit) {
spin_unlock(&inode->i_lock);
goto out_sig; goto out_sig;
if (offset > inode->i_sb->s_maxbytes) }
if (offset > inode->i_sb->s_maxbytes) {
spin_unlock(&inode->i_lock);
goto out_big; goto out_big;
}
i_size_write(inode, offset); i_size_write(inode, offset);
spin_unlock(&inode->i_lock);
out_truncate: out_truncate:
if (inode->i_op && inode->i_op->truncate) if (inode->i_op && inode->i_op->truncate)
inode->i_op->truncate(inode); inode->i_op->truncate(inode);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment