From: NeilBrown Date: Mon, 18 Aug 2014 03:59:50 +0000 (+1000) Subject: md/raid10: Fix memory leak when raid10 reshape completes. X-Git-Tag: submit/tizen_common/20140918.111125~72 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fdb396bd32aa6353786be119feb60c261dcace2e;p=profile%2Fivi%2Fkernel-x86-ivi.git md/raid10: Fix memory leak when raid10 reshape completes. commit b39685526f46976bcd13aa08c82480092befa46c upstream. When a raid10 commences a resync/recovery/reshape it allocates some buffer space. When a resync/recovery completes the buffer space is freed. But not when the reshape completes. This can result in a small memory leak. There is a subtle side-effect of this bug. When a RAID10 is reshaped to a larger array (more devices), the reshape is immediately followed by a "resync" of the new space. This "resync" will use the buffer space which was allocated for "reshape". This can cause problems including a "BUG" in the SCSI layer. So this is suitable for -stable. Fixes: 3ea7daa5d7fde47cd41f4d56c2deb949114da9d6 Signed-off-by: NeilBrown Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index d9073a1..a46124e 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -2953,6 +2953,7 @@ static sector_t sync_request(struct mddev *mddev, sector_t sector_nr, */ if (test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery)) { end_reshape(conf); + close_sync(conf); return 0; }