EXT: fix test ext_generic_write_end() copied return value
PATCH 1/1 EXT: fix test ext_generic_write_end() copied return value
'copied' is unsigned, whereas 'ret2' is not. The test (copied < 0) fails
Signed-off-by Roel Kluin <[email protected]>
---
fs/ext3/inode.c +8 -6
@@ -1261,10 +1261,11 @@ static int ext3_ordered_write_end(struct file *file, new_i_size = pos + copied;if (new_i_size >EXT3_I (inode)->i_disksize)EXT3_I (inode)->i_disksize = new_i_size; - copied =ext3_generic_write_end (file, mapping, pos, len, copied, + ret2 =ext3_generic_write_end (file, mapping, pos, len, copied, page, fsdata); -if (copied <0 ) - ret = copied; + copied = ret2; +if (ret2 <0 ) + ret = ret2; } ret2 =ext3_journal_stop (handle);if (!ret)
@@ -1289,10 +1290,11 @@ static int ext3_writeback_write_end(struct file *file,if (new_i_size >EXT3_I (inode)->i_disksize)EXT3_I (inode)->i_disksize = new_i_size; - copied =ext3_generic_write_end (file, mapping, pos, len, copied, + ret2 =ext3_generic_write_end (file, mapping, pos, len, copied, page, fsdata); -if (copied <0 ) - ret = copied; + copied = ret2; +if (ret2 <0 ) + ret = ret2; ret2 =ext3_journal_stop (handle);if (!ret)
fs/ext4/inode.c +8 -6
@@ -1301,10 +1301,11 @@ static int ext4_ordered_write_end(struct file *file, new_i_size = pos + copied;if (new_i_size >EXT4_I (inode)->i_disksize)EXT4_I (inode)->i_disksize = new_i_size; - copied =ext4_generic_write_end (file, mapping, pos, len, copied, + ret2 =ext4_generic_write_end (file, mapping, pos, len, copied, page, fsdata); -if (copied <0 ) - ret = copied; + copied = ret2; +if (ret2 <0 ) + ret = ret2; } ret2 =ext4_journal_stop (handle);if (!ret)
@@ -1329,10 +1330,11 @@ static int ext4_writeback_write_end(struct file *file,if (new_i_size >EXT4_I (inode)->i_disksize)EXT4_I (inode)->i_disksize = new_i_size; - copied =ext4_generic_write_end (file, mapping, pos, len, copied, + ret2 =ext4_generic_write_end (file, mapping, pos, len, copied, page, fsdata); -if (copied <0 ) - ret = copied; + copied = ret2; +if (ret2 <0 ) + ret = ret2; ret2 =ext4_journal_stop (handle);if (!ret)
Quoted 2 lines · Roel Kluin
'copied' is unsigned, whereas 'ret2' is not. The test (copied < 0) fails
While your patch is correct, we don't need it :(
"copied" can never be < 0. Infact, the check itself is NOT needed. It might have been my fault to add that check, when we converted to write_begin/end interfaces :(
As you can see block_write_end() never returns < 0.
Thanks,
Badari
Quoted 74 lines
Signed-off-by Roel Kluin <[email protected]>---
fs/ext3/inode.c +8
-6@@ -1261,10 +1261,11 @@ static int ext3_ordered_write_end(struct file *file, new_i_size = pos + copied;if (new_i_size >EXT3_I (inode)->i_disksize)EXT3_I (inode)->i_disksize = new_i_size; - copied =ext3_generic_write_end (file, mapping, pos, len, copied, + ret2 =ext3_generic_write_end (file, mapping, pos, len, copied, page, fsdata); -if (copied <0 ) - ret = copied; + copied = ret2; +if (ret2 <0 ) + ret = ret2; } ret2 =ext3_journal_stop (handle);if (!ret)@@ -1289,10 +1290,11 @@ static int ext3_writeback_write_end(struct file *file,if (new_i_size >EXT3_I (inode)->i_disksize)EXT3_I (inode)->i_disksize = new_i_size; - copied =ext3_generic_write_end (file, mapping, pos, len, copied, + ret2 =ext3_generic_write_end (file, mapping, pos, len, copied, page, fsdata); -if (copied <0 ) - ret = copied; + copied = ret2; +if (ret2 <0 ) + ret = ret2; ret2 =ext3_journal_stop (handle);if (!ret)fs/ext4/inode.c +8
-7@@ -1301,10 +1301,11 @@ static int ext4_ordered_write_end(struct file *file, new_i_size = pos + copied;if (new_i_size >EXT4_I (inode)->i_disksize)EXT4_I (inode)->i_disksize = new_i_size; - copied =ext4_generic_write_end (file, mapping, pos, len, copied, + ret2 =ext4_generic_write_end (file, mapping, pos, len, copied, page, fsdata); -if (copied <0 ) - ret = copied; + copied = ret2; +if (ret2 <0 ) + ret = ret2; } ret2 =ext4_journal_stop (handle);if (!ret)@@ -1329,10 +1330,11 @@ static int ext4_writeback_write_end(struct file *file,if (new_i_size >EXT4_I (inode)->i_disksize)EXT4_I (inode)->i_disksize = new_i_size; - copied =ext4_generic_write_end (file, mapping, pos, len, copied, + ret2 =ext4_generic_write_end (file, mapping, pos, len, copied, page, fsdata); -if (copied <0 ) - ret = copied; + copied = ret2; +if (ret2 <0 ) + ret = ret2; ret2 =ext4_journal_stop (handle);if (!ret) --To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html