mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-13 04:48:21 -04:00
udf: Propagate errors from udf_advance_blk()
When we spot directory corruption when trying to load next directory extent, we didn't propagate the error up properly, leading to possibly indefinite looping on corrupted directories. Fix the problem by propagating the error properly. Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
@@ -217,7 +217,9 @@ static int udf_fiiter_load_bhs(struct udf_fileident_iter *iter)
|
||||
/* Need to fetch next block to get name? */
|
||||
if (off + udf_dir_entry_len(fi) > blksize) {
|
||||
fetch_next:
|
||||
udf_fiiter_advance_blk(iter);
|
||||
err = udf_fiiter_advance_blk(iter);
|
||||
if (err)
|
||||
goto out_brelse;
|
||||
iter->bh[1] = udf_fiiter_bread_blk(iter);
|
||||
if (!iter->bh[1]) {
|
||||
err = -ENOMEM;
|
||||
@@ -296,7 +298,9 @@ int udf_fiiter_advance(struct udf_fileident_iter *iter)
|
||||
iter->bh[0] = iter->bh[1];
|
||||
iter->bh[1] = NULL;
|
||||
} else {
|
||||
udf_fiiter_advance_blk(iter);
|
||||
err = udf_fiiter_advance_blk(iter);
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
}
|
||||
err = udf_fiiter_load_bhs(iter);
|
||||
|
||||
Reference in New Issue
Block a user