Skip to content

Commit

Permalink
udf: Fix bitmap overflow on large filesystems with small block size
Browse files Browse the repository at this point in the history
For large UDF filesystems with 512-byte blocks the number of necessary
bitmap blocks is larger than 2^16 so s_nr_groups in udf_bitmap overflows
(the number will overflow for filesystems larger than 128 GB with
512-byte blocks). That results in ENOSPC errors despite the filesystem
has plenty of free space.

Fix the problem by changing s_nr_groups' type to 'int'. That is enough
even for filesystems 2^32 blocks (UDF maximum) and 512-byte blocksize.

Reported-and-tested-by: [email protected]
Signed-off-by: Jan Kara <[email protected]>
  • Loading branch information
jankara committed Feb 5, 2013
1 parent 9960005 commit 89b1f39
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion fs/udf/udf_sb.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ struct udf_virtual_data {
struct udf_bitmap {
__u32 s_extLength;
__u32 s_extPosition;
__u16 s_nr_groups;
int s_nr_groups;
struct buffer_head **s_block_bitmap;
};

Expand Down

0 comments on commit 89b1f39

Please sign in to comment.