[PATCH] md/raid5: fail invalid raid5_set_limits() geometry

"Chen Cheng" <[email protected]>
Newsgroups gmane.linux.kernel,gmane.linux.raid
Message-ID <[email protected]>
From: Chen Cheng <[email protected]>

Prevent raid5_set_limits() from building a stripe size when the array
geometry reports no data disks.

Reported-by: [email protected]
Closes: https://syzkaller.appspot.com/bug?extid=de94ddbfff0c9e6fe030
Fixes: f63f17350e537300312 ("md/raid5: use the atomic queue limit update APIs")

Signed-off-by: Chen Cheng <[email protected]>
---
 drivers/md/raid5.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index ffb5fcde54a9..c0adb73b1dd4 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -7825,10 +7825,12 @@ static int raid5_set_limits(struct mddev *mddev)
 	/*
 	 * The read-ahead size must cover two whole stripes, which is
 	 * 2 * (datadisks) * chunksize where 'n' is the number of raid devices.
 	 */
 	data_disks = conf->previous_raid_disks - conf->max_degraded;
+	if (data_disks <= 0)
+		return -EINVAL;
 
 	/*
 	 * We can only discard a whole stripe. It doesn't make sense to
 	 * discard data disk but write parity disk
 	 */
-- 
2.55.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.