Blame SOURCES/0008-Grow-avoid-overflow-in-compute_backup_blocks.patch

5eacff
From 085df42259cba7863cd6ebe5cd0d8492ac5b869e Mon Sep 17 00:00:00 2001
5eacff
From: NeilBrown <neilb@suse.com>
5eacff
Date: Thu, 6 Dec 2018 10:35:41 +1100
5eacff
Subject: [RHEL7.7 PATCH 08/24] Grow: avoid overflow in compute_backup_blocks()
5eacff
5eacff
With a chunk size of 16Meg and data drive count of 8,
5eacff
this calculate can easily overflow the 'int' type that
5eacff
is used for the multiplications.
5eacff
So force it to use "long" instead.
5eacff
5eacff
Reported-and-tested-by: Ed Spiridonov <edo.rus@gmail.com>
5eacff
Signed-off-by: NeilBrown <neilb@suse.com>
5eacff
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
5eacff
---
5eacff
 Grow.c | 3 ++-
5eacff
 1 file changed, 2 insertions(+), 1 deletion(-)
5eacff
5eacff
diff --git a/Grow.c b/Grow.c
5eacff
index 4436a4d..76f82c0 100644
5eacff
--- a/Grow.c
5eacff
+++ b/Grow.c
5eacff
@@ -1196,7 +1196,8 @@ unsigned long compute_backup_blocks(int nchunk, int ochunk,
5eacff
 	/* Find GCD */
5eacff
 	a = GCD(a, b);
5eacff
 	/* LCM == product / GCD */
5eacff
-	blocks = (ochunk/512) * (nchunk/512) * odata * ndata / a;
5eacff
+	blocks = (unsigned long)(ochunk/512) * (unsigned long)(nchunk/512) *
5eacff
+		odata * ndata / a;
5eacff
 
5eacff
 	return blocks;
5eacff
 }
5eacff
-- 
5eacff
2.7.5
5eacff