From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gal Pressman Subject: Re: [PATCH ethtool 5/6] ethtool: correctly free hkey when get_stringset() fails Date: Fri, 8 Jun 2018 12:46:14 +0300 Message-ID: References: <20180608092010.13041-1-cera@cera.cz> <20180608092010.13041-5-cera@cera.cz> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Cc: , Gal Pressman To: Ivan Vecera , Return-path: Received: from smtp-fw-6002.amazon.com ([52.95.49.90]:15806 "EHLO smtp-fw-6002.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750969AbeFHJq3 (ORCPT ); Fri, 8 Jun 2018 05:46:29 -0400 In-Reply-To: <20180608092010.13041-5-cera@cera.cz> Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: On 08-Jun-18 12:20, Ivan Vecera wrote: > Memory allocated for 'hkey' is not freed when > get_stringset(..., ETH_SS_RSS_HASH_FUNCS...) fails. > > Fixes: b888f35 ("ethtool: Support for configurable RSS hash function") Thanks for fixing this! Please use the first 12 characters of the sha1 in the Fixes line. > Cc: Gal Pressman > Signed-off-by: Ivan Vecera > --- > ethtool.c | 13 ++++++------- > 1 file changed, 6 insertions(+), 7 deletions(-) > > diff --git a/ethtool.c b/ethtool.c > index 2b90984..fb93ae8 100644 > --- a/ethtool.c > +++ b/ethtool.c > @@ -3910,7 +3910,7 @@ static int do_srxfhindir(struct cmd_context *ctx, int rxfhindir_default, > static int do_srxfh(struct cmd_context *ctx) > { > struct ethtool_rxfh rss_head = {0}; > - struct ethtool_rxfh *rss; > + struct ethtool_rxfh *rss = NULL; > struct ethtool_rxnfc ring_count; > int rxfhindir_equal = 0, rxfhindir_default = 0; > struct ethtool_gstrings *hfuncs = NULL; > @@ -4064,7 +4064,8 @@ static int do_srxfh(struct cmd_context *ctx) > hfuncs = get_stringset(ctx, ETH_SS_RSS_HASH_FUNCS, 0, 1); > if (!hfuncs) { > perror("Cannot get hash functions names"); > - return 1; > + err = 1; > + goto free; > } > > for (i = 0; i < hfuncs->len && !req_hfunc ; i++) { > @@ -4078,8 +4079,8 @@ static int do_srxfh(struct cmd_context *ctx) > if (!req_hfunc) { > fprintf(stderr, > "Unknown hash function: %s\n", req_hfunc_name); > - free(hfuncs); > - return 1; > + err = 1; > + goto free; > } > } > > @@ -4120,9 +4121,7 @@ static int do_srxfh(struct cmd_context *ctx) > } > > free: > - if (hkey) > - free(hkey); > - > + free(hkey); > free(rss); > free(hfuncs); > return err; >