Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S942426AbcJFJo7 (ORCPT ); Thu, 6 Oct 2016 05:44:59 -0400 Received: from mout.web.de ([212.227.17.11]:61805 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S942217AbcJFJo4 (ORCPT ); Thu, 6 Oct 2016 05:44:56 -0400 Subject: [PATCH 44/54] md/raid10: Return directly after a failed kzalloc() in setup_conf() To: linux-raid@vger.kernel.org, Christoph Hellwig , Guoqing Jiang , Jens Axboe , Mike Christie , Neil Brown , Shaohua Li , Tomasz Majchrzak References: <566ABCD9.1060404@users.sourceforge.net> <786843ef-4b6f-eb04-7326-2f6f5b408826@users.sourceforge.net> Cc: LKML , kernel-janitors@vger.kernel.org, Julia Lawall From: SF Markus Elfring Message-ID: <6885c0ba-458f-23aa-883d-d1571c398bc5@users.sourceforge.net> Date: Thu, 6 Oct 2016 11:44:30 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <786843ef-4b6f-eb04-7326-2f6f5b408826@users.sourceforge.net> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:N3oUeYfHMKzUcpgzkR3Si6IRZHfnAtidILS28OeECEAQgW/4434 yaEh0ArIaGdaZsyuxgnmP9n2CGrvY3m/Xg1SYtOpTJ5ozB/mGJ+OHqsFCisedpqK9VdMrbq SOnbXBQ6bROmhClO1qCiTa/Hx9va0mBOhyXOkFBKVXqPTghIB68l2tlMa1q5JvbuDX6k3zY wA7ntEmsdN2mgn9zkbI0A== X-UI-Out-Filterresults: notjunk:1;V01:K0:zbaTpYbafi8=:plceXfVrA4R4fXig5VpzUx HOMCFEW6/7FU28yV64ejMZiAa1BdW/bLXo3BFovYNR1IS4NRPcUHgBJRhCXRoOfJ1AjQ4IdhZ NYq78Vo5T+e5I9nNbaKjypGsEwUyJZExGe5528m1+xCo2FuWAoawUjt3VRS9tkt/Gjed6pszS DmJn8nA+DlI8fkGP/ky1SAkwFQXBFzyJtaqVBKyTzHj9N8AcOH2ppA1Wwfq970Hw3KDHV/hgh K3TFcgRUC2+meCcju+BcbOVj+mcikAU8+M94bj/1OU2je8f7ZJUvoIhubu7tTCzEJKxzeKPtw nrTF+dEzGMwrADyvXdl54xwP6dqh56ByqKvY8b83L0QMRDgSOWbNrbJFzEPGUR3N0YGQY3lNO GbJKJmq8jYlcum00sffSalbi5Zjloo3M1jvXHNaEdJeZnph8kP/1IeBDROh++6y3SKJ7cJLAo bVT3KjR9vCek6qAzowWYHP8Dt2uGr3Y1rzPrrHlaShypnqZzY7aWwhMeMwnGjmiRhj0wYFKUf bYHTRHmFagPxTbQBQcribjd0BjE3Khe1+KwclWusbhkaWcr0VrtqlnXfZWUDrXqSXLS9hrcEh qLOkNkrV/x303pR0mHQgJR49xR46p5R0RJFhAHXbjQtTX1+FKKFvkkK0dXTxCHagx33WbzAxZ ndn4u8z+pYvAX2DYpTCD8D76aygaYsCutzIRPFMCPVCQi6yGbiC7Pnsa7XMeJORPruq6ox+hW IiZF8QiThGYrNp/QR1VjJmOu/EVZbuZTNA95NstSJqUQ3DkpP4P3ifatBR5v6CndomEUVdI/P QKEJhi2 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1332 Lines: 49 From: Markus Elfring Date: Wed, 5 Oct 2016 17:46:02 +0200 * Return directly after a call of the function "kzalloc" failed at the beginning. * Delete a repeated check for the local variable "conf" which became unnecessary with this refactoring. * Reorder calls for the functions "kfree" and "safe_put_page" at the end. Signed-off-by: Markus Elfring --- drivers/md/raid10.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index 8326e68..abe75c2 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -3501,7 +3501,7 @@ static struct r10conf *setup_conf(struct mddev *mddev) err = -ENOMEM; conf = kzalloc(sizeof(*conf), GFP_KERNEL); if (!conf) - goto out; + return ERR_PTR(-ENOMEM); /* FIXME calc properly */ conf->mirrors = kcalloc(mddev->raid_disks + max(0, -mddev->delta_disks), @@ -3554,12 +3554,10 @@ static struct r10conf *setup_conf(struct mddev *mddev) return conf; out: - if (conf) { - mempool_destroy(conf->r10bio_pool); - kfree(conf->mirrors); - safe_put_page(conf->tmppage); - kfree(conf); - } + mempool_destroy(conf->r10bio_pool); + safe_put_page(conf->tmppage); + kfree(conf->mirrors); + kfree(conf); return ERR_PTR(err); } -- 2.10.1