summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2013-07-01 08:12:39 -0400
committerTheodore Ts'o <tytso@mit.edu>2013-07-01 08:12:39 -0400
commit42c832debbbf819f6c4ad8601baa559c44105ba4 (patch)
tree454b3ac82c41ebdb3a88782744f7e8636fe2f29f
parent353eefd3386982ab8f7e14de079ec347dfe05509 (diff)
downloadlinux-42c832debbbf819f6c4ad8601baa559c44105ba4.tar.bz2
ext4: check error return from ext4_write_inline_data_end()
The function ext4_write_inline_data_end() can return an error. So we need to assign it to a signed integer variable to check for an error return (since copied is an unsigned int). Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> Cc: Zheng Liu <wenqing.lz@taobao.com> Cc: stable@vger.kernel.org
-rw-r--r--fs/ext4/inode.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 6d051deafc39..09942341dfae 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -1061,10 +1061,13 @@ static int ext4_write_end(struct file *file,
}
}
- if (ext4_has_inline_data(inode))
- copied = ext4_write_inline_data_end(inode, pos, len,
- copied, page);
- else
+ if (ext4_has_inline_data(inode)) {
+ ret = ext4_write_inline_data_end(inode, pos, len,
+ copied, page);
+ if (ret < 0)
+ goto errout;
+ copied = ret;
+ } else
copied = block_write_end(file, mapping, pos,
len, copied, page, fsdata);