From 63ebe78faefc47ce8612b619bb25b3438cf8378b Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Tue, 23 Oct 2012 08:48:00 +1100 Subject: [PATCH] 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 --- super0.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/super0.c b/super0.c index eb902eb..ecb6b38 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;