udf: Handle error when expanding directory
authorJan Kara <jack@suse.cz>
Mon, 19 Dec 2022 18:50:14 +0000 (19:50 +0100)
committerJan Kara <jack@suse.cz>
Mon, 9 Jan 2023 09:39:52 +0000 (10:39 +0100)
When there is an error when adding extent to the directory to expand it,
make sure to propagate the error up properly. This is not expected to
happen currently but let's make the code more futureproof.

Signed-off-by: Jan Kara <jack@suse.cz>
fs/udf/namei.c

index ff9455b8c2fd7960fdc081749628cc3049bb31a7..a4e8284043c1d549baef43772787457f8fa16212 100644 (file)
@@ -192,8 +192,13 @@ static struct buffer_head *udf_expand_dir_adinicb(struct inode *inode,
        epos.bh = NULL;
        epos.block = iinfo->i_location;
        epos.offset = udf_file_entry_alloc_offset(inode);
-       udf_add_aext(inode, &epos, &eloc, inode->i_size, 0);
+       ret = udf_add_aext(inode, &epos, &eloc, inode->i_size, 0);
        brelse(epos.bh);
+       if (ret < 0) {
+               *err = ret;
+               udf_free_blocks(inode->i_sb, inode, &eloc, 0, 1);
+               return NULL;
+       }
        mark_inode_dirty(inode);
 
        /* Now fixup tags in moved directory entries */