From: NeilBrown Date: Mon, 22 Oct 2012 21:48:00 +0000 (+1100) Subject: super0: allow creation of array on 2TB+ devices. X-Git-Tag: mdadm-3.3-rc1~168 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=63ebe78faefc47ce8612b619bb25b3438cf8378b;p=thirdparty%2Fmdadm.git 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 --- diff --git a/super0.c b/super0.c index eb902ebd..ecb6b382 100644 --- a/super0.c +++ b/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;