]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ext4: propagate errors from ext4_find_extent() in ext4_insert_range()
authorBaokun Li <libaokun1@huawei.com>
Thu, 22 Aug 2024 02:35:30 +0000 (10:35 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 Oct 2024 13:11:37 +0000 (15:11 +0200)
commit 369c944ed1d7c3fb7b35f24e4735761153afe7b3 upstream.

Even though ext4_find_extent() returns an error, ext4_insert_range() still
returns 0. This may confuse the user as to why fallocate returns success,
but the contents of the file are not as expected. So propagate the error
returned by ext4_find_extent() to avoid inconsistencies.

Fixes: 331573febb6a ("ext4: Add support FALLOC_FL_INSERT_RANGE for fallocate")
Cc: stable@kernel.org
Signed-off-by: Baokun Li <libaokun1@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
Tested-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
Link: https://patch.msgid.link/20240822023545.1994557-11-libaokun@huaweicloud.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/ext4/extents.c

index 2bcf92c2bc2afed9c783ccd71b76d20c741d74c0..c96e20cb3b4ad9d79a219d61ccef270c61631154 100644 (file)
@@ -5574,6 +5574,7 @@ static int ext4_insert_range(struct file *file, loff_t offset, loff_t len)
        path = ext4_find_extent(inode, offset_lblk, NULL, 0);
        if (IS_ERR(path)) {
                up_write(&EXT4_I(inode)->i_data_sem);
+               ret = PTR_ERR(path);
                goto out_stop;
        }