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:
NeilBrown 2012-10-23 08:48:00 +11:00
parent 79f9f56da6
commit 63ebe78fae
1 changed files with 2 additions and 2 deletions

View File

@ -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;