On Mon, Oct 03, 2016 at 01:54:26PM -0400, Jarod Wilson wrote: > On Fri, Sep 30, 2016 at 03:56:16PM -0400, John W. Linville wrote: > > Coverity issue: 1363119 > > Fixes: e1ee596326ae ("Add support for querying and setting private flags") > > > > Signed-off-by: John W. Linville <linvi...@tuxdriver.com> > > --- > > ethtool.c | 18 +++++++++++++----- > > 1 file changed, 13 insertions(+), 5 deletions(-) > > > > diff --git a/ethtool.c b/ethtool.c > > index aa3ef5ed2f75..0885a61097ad 100644 > > --- a/ethtool.c > > +++ b/ethtool.c > > @@ -4205,7 +4205,7 @@ static int do_gprivflags(struct cmd_context *ctx) > > struct ethtool_gstrings *strings; > > struct ethtool_value flags; > > unsigned int i; > > - int max_len = 0, cur_len; > > + int max_len = 0, cur_len, rc; > > > > if (ctx->argc != 0) > > exit_bad_args(); > > @@ -4215,11 +4215,13 @@ static int do_gprivflags(struct cmd_context *ctx) > > 1); > > if (!strings) { > > perror("Cannot get private flag names"); > > - return 1; > > + rc = 1; > > + goto err; > > This goto looks redundant, since all you're doing at err is re-checking if > strings is non-null to free it.
True, the original return is just as good there. And since strings is non-NULL for everything after that, the NULL check at error can be eliminated as well... Thanks! John > > if (strings->len == 0) { > > fprintf(stderr, "No private flags defined\n"); > > - return 1; > > + rc = 1; > > + goto err; > > } > > if (strings->len > 32) { > > /* ETHTOOL_GPFLAGS can only cover 32 flags */ > > @@ -4230,7 +4232,8 @@ static int do_gprivflags(struct cmd_context *ctx) > > flags.cmd = ETHTOOL_GPFLAGS; > > if (send_ioctl(ctx, &flags)) { > > perror("Cannot get private flags"); > > - return 1; > > + rc = 1; > > + goto err; > > } > > > > /* Find longest string and align all strings accordingly */ > > @@ -4248,7 +4251,12 @@ static int do_gprivflags(struct cmd_context *ctx) > > (const char *)strings->data + i * ETH_GSTRING_LEN, > > (flags.data & (1U << i)) ? "on" : "off"); > > > > - return 0; > > + rc = 0; > > + > > +err: > > + if (strings) > > + free(strings); > > + return rc; > > } > > > > static int do_sprivflags(struct cmd_context *ctx) > > -- > > 2.7.4 > > > > -- > Jarod Wilson > ja...@redhat.com > > > -- John W. Linville Someday the world will need a hero, and you linvi...@tuxdriver.com might be all we have. Be ready.