mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
udf: Handle error when adding extent to symlink
When adding extent describing symlink data fails, make sure to handle the error properly, propagate it up and free the already allocated block. Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
parent
33e9a53cd9
commit
2b10074d91
1 changed files with 6 additions and 1 deletions
|
@ -613,8 +613,12 @@ static int udf_symlink(struct user_namespace *mnt_userns, struct inode *dir,
|
|||
iinfo->i_location.partitionReferenceNum;
|
||||
bsize = sb->s_blocksize;
|
||||
iinfo->i_lenExtents = bsize;
|
||||
udf_add_aext(inode, &epos, &eloc, bsize, 0);
|
||||
err = udf_add_aext(inode, &epos, &eloc, bsize, 0);
|
||||
brelse(epos.bh);
|
||||
if (err < 0) {
|
||||
udf_free_blocks(sb, inode, &eloc, 0, 1);
|
||||
goto out_no_entry;
|
||||
}
|
||||
|
||||
block = udf_get_pblock(sb, block,
|
||||
iinfo->i_location.partitionReferenceNum,
|
||||
|
@ -622,6 +626,7 @@ static int udf_symlink(struct user_namespace *mnt_userns, struct inode *dir,
|
|||
epos.bh = udf_tgetblk(sb, block);
|
||||
if (unlikely(!epos.bh)) {
|
||||
err = -ENOMEM;
|
||||
udf_free_blocks(sb, inode, &eloc, 0, 1);
|
||||
goto out_no_entry;
|
||||
}
|
||||
lock_buffer(epos.bh);
|
||||
|
|
Loading…
Add table
Reference in a new issue