Skip to content

Commit

Permalink
udf: Allow volume descriptor sequence to be terminated by unrecorded …
Browse files Browse the repository at this point in the history
…block

According to ECMA-167 3/8.4.2 a volume descriptor sequence can be
terminated also by an unrecorded block within the extent of volume
descriptor sequence. Currently we errored out in such case making such
volumes unmountable. Handle that case by treating any invalid block as a
block terminating the sequence.

Reported-by: Pali Rohár <pali.rohar@gmail.com>
Acked-by: Pali Rohár <pali.rohar@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
  • Loading branch information
Jan Kara committed Feb 16, 2018
1 parent 7b568cb commit 6762167
Showing 1 changed file with 2 additions and 6 deletions.
8 changes: 2 additions & 6 deletions fs/udf/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -1627,12 +1627,8 @@ static noinline int udf_process_sequence(
for (; (!done && block <= lastblock); block++) {

bh = udf_read_tagged(sb, block, block, &ident);
if (!bh) {
udf_err(sb,
"Block %llu of volume descriptor sequence is corrupted or we could not read it\n",
(unsigned long long)block);
return -EAGAIN;
}
if (!bh)
break;

/* Process each descriptor (ISO 13346 3/8.3-8.4) */
gd = (struct generic_desc *)bh->b_data;
Expand Down

0 comments on commit 6762167

Please sign in to comment.