super0: allow creation of array on 2TB+ devices.
As 'info->size' is signed, it cannot even hold values above 2TB. But it isn't used much. sb->size is the important value and it is unsigned. So use that to check for overflow of size. Reported-by: Eugene San <eugenesan@gmail.com>
This commit is contained in:
parent
79f9f56da6
commit
63ebe78fae
4
super0.c
4
super0.c
|
@ -638,9 +638,9 @@ static int init_super0(struct supertype *st, mdu_array_info_t *info,
|
|||
sb->gvalid_words = 0; /* ignored */
|
||||
sb->ctime = time(0);
|
||||
sb->level = info->level;
|
||||
if (size != (unsigned long long)info->size)
|
||||
sb->size = size;
|
||||
if (size != (unsigned long long)sb->size)
|
||||
return 0;
|
||||
sb->size = info->size;
|
||||
sb->nr_disks = info->nr_disks;
|
||||
sb->raid_disks = info->raid_disks;
|
||||
sb->md_minor = info->md_minor;
|
||||
|
|
Loading…
Reference in New Issue