From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757606AbcILS5a (ORCPT ); Mon, 12 Sep 2016 14:57:30 -0400 Received: from mout.web.de ([212.227.15.3]:57253 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755744AbcILS5Z (ORCPT ); Mon, 12 Sep 2016 14:57:25 -0400 Subject: [PATCH 12/47] block-rbd: One function call less in rbd_dev_v2_parent_info() after error detection To: ceph-devel@vger.kernel.org, Alex Elder , Ilya Dryomov , Sage Weil References: <566ABCD9.1060404@users.sourceforge.net> <57806eb1-10ed-582e-72d0-2975e1ee967a@users.sourceforge.net> Cc: LKML , kernel-janitors@vger.kernel.org, Julia Lawall From: SF Markus Elfring Message-ID: <3b1883b8-790c-156b-6e8d-f2bcf8848903@users.sourceforge.net> Date: Mon, 12 Sep 2016 20:57:10 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0 MIME-Version: 1.0 In-Reply-To: <57806eb1-10ed-582e-72d0-2975e1ee967a@users.sourceforge.net> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:HkF9x4XO13+1GhAWZakdGdu0SV6GEVRhtvsABCpaBbQW+FTA5ms 0MScbuuV2L+s342arFe3wHl/oTKFuaLIaDvSVebnJ+myHAg3KiYFcMvrATE09W4bOhLvbzm sATqrV6SzXbVRanE4ckXIbS4vrQD1UuD6b3qstqP8PGH2LIVvCZfA3C3Dyc4eLC0n9pCXOY vjsYRN4hLGz/su+lhNRlA== X-UI-Out-Filterresults: notjunk:1;V01:K0:AwZnN9S2B+c=:DhmWBaMWEtXW9vIaknV6M9 MPVLtW08uMaVc5sXdtw75xEmD+LPQ65h8ohcZsPXEcIYzUbZItJj+cnnfWJemLEQ7HT/XQ4nv kzFLBP12wm6wrA8arLkhnBW1ltK2iBoEKfuNo+pO57s3LGEVeHESD1/Jg7LTn1QIEcEUCm0rE d+Wa3lKzTsWcr7z4qwS6MfA4OCJSDrx/kf7D+cfzpL36AG7ARQ/pA/lVz/7tu9slRMiE51qCC e5HhFSwWkDENy0DKu1LJe4KZmdp9IoqwmS/Yg6Tklh2bBtWCk4blLlG5PSHNhmQWprSYo5hlP VRAMqWH2a6qgeFz/nJJSzyHaWpfk6P5/7ybyT2O0STf8nx2oeFvao01iWssAXW4twTqNnjun6 S1K5NKORqMt8UVATRxIsRDMyHsbDfervtlJNaaY4X/FggBAmOXbJurULl0BgpMBfKnxiSzrUI 2Xh9O0VaJcC9+IlB5zZTXlf09eUOG1cbjvPf+VaX6OcXOb8HQZT1WiRBRyyARVtyQ6bqwH4UO sRJtN6zNNy4m5dP5zwAOq2VukE2qsR8kU+07s2DnVYiMwOdbZwYwIgdtOgRZLtPUw0oELsAHZ P6p6JwpnYam+L/yK1t9+0P5H6LOe6zw1l+Iog+4tVDBO7C+yPu8wH+vqYSrKqd/1UYM3F0riT hVCJeJi22rBr+x0lNYdMOd6wpUM7AB/cp6nfOIjWe23Saa9X25+MX4F4IXnlYH8xtSybUZfCd GGXrV9FEbimMLtMNqlBN679rMKSxjXT0r0ocsYNg92Vfc4YLitR2I6d6OW6R8h8krqE1lxEkw qtd1OxM Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Markus Elfring Date: Mon, 12 Sep 2016 18:05:00 +0200 The kfree() function was called in one case by the rbd_dev_v2_parent_info() function during error handling even if the passed variable "reply_buf" contained a null pointer. Adjust jump targets according to the Linux coding style convention. Signed-off-by: Markus Elfring --- drivers/block/rbd.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c index 90797aa..946e3ca 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c @@ -5105,7 +5105,7 @@ static int rbd_dev_v2_parent_info(struct rbd_device *rbd_dev) reply_buf = kmalloc(size, GFP_KERNEL); if (!reply_buf) { ret = -ENOMEM; - goto out_err; + goto put_spec; } snapid = cpu_to_le64(rbd_dev->spec->snap_id); @@ -5115,12 +5115,12 @@ static int rbd_dev_v2_parent_info(struct rbd_device *rbd_dev) reply_buf, size); dout("%s: rbd_obj_method_sync returned %d\n", __func__, ret); if (ret < 0) - goto out_err; + goto free_buffer; p = reply_buf; end = reply_buf + ret; ret = -ERANGE; - ceph_decode_64_safe(&p, end, pool_id, out_err); + ceph_decode_64_safe(&p, end, pool_id, free_buffer); if (pool_id == CEPH_NOPOOL) { /* * Either the parent never existed, or we have @@ -5138,7 +5138,7 @@ static int rbd_dev_v2_parent_info(struct rbd_device *rbd_dev) rbd_dev->disk->disk_name); } - goto out; /* No parent? No problem. */ + goto success_indication; /* No parent? No problem. */ } /* The ceph file layout needs to fit pool id in 32 bits */ @@ -5147,16 +5147,16 @@ static int rbd_dev_v2_parent_info(struct rbd_device *rbd_dev) if (pool_id > (u64)U32_MAX) { rbd_warn(NULL, "parent pool id too large (%llu > %u)", (unsigned long long)pool_id, U32_MAX); - goto out_err; + goto free_buffer; } image_id = ceph_extract_encoded_string(&p, end, NULL, GFP_KERNEL); if (IS_ERR(image_id)) { ret = PTR_ERR(image_id); - goto out_err; + goto free_buffer; } - ceph_decode_64_safe(&p, end, snap_id, out_err); - ceph_decode_64_safe(&p, end, overlap, out_err); + ceph_decode_64_safe(&p, end, snap_id, free_buffer); + ceph_decode_64_safe(&p, end, overlap, free_buffer); /* * The parent won't change (except when the clone is @@ -5189,11 +5189,11 @@ static int rbd_dev_v2_parent_info(struct rbd_device *rbd_dev) } } rbd_dev->parent_overlap = overlap; - -out: + success_indication: ret = 0; -out_err: + free_buffer: kfree(reply_buf); + put_spec: rbd_spec_put(parent_spec); return ret; -- 2.10.0