]> git.baikalelectronics.ru Git - kernel.git/commitdiff
udf: Fix extension of the last extent in the file
authorJan Kara <jack@suse.cz>
Wed, 21 Dec 2022 16:45:51 +0000 (17:45 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 18 Jan 2023 10:41:58 +0000 (11:41 +0100)
[ Upstream commit 83c7423d1eb6806d13c521d1002cc1a012111719 ]

When extending the last extent in the file within the last block, we
wrongly computed the length of the last extent. This is mostly a
cosmetical problem since the extent does not contain any data and the
length will be fixed up by following operations but still.

Fixes: 1f3868f06855 ("udf: Fix extending file within last block")
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/udf/inode.c

index f6bbf395ce0722f368a2bce94315fc17a2ebf19f..37a6bbd5a19c9dd7ea677e79105783da6ee5a8cd 100644 (file)
@@ -602,7 +602,7 @@ static void udf_do_extend_final_block(struct inode *inode,
         */
        if (new_elen <= (last_ext->extLength & UDF_EXTENT_LENGTH_MASK))
                return;
-       added_bytes = (last_ext->extLength & UDF_EXTENT_LENGTH_MASK) - new_elen;
+       added_bytes = new_elen - (last_ext->extLength & UDF_EXTENT_LENGTH_MASK);
        last_ext->extLength += added_bytes;
        UDF_I(inode)->i_lenExtents += added_bytes;