From: Ingo Molnar <mingo@kernel.org>
To: kernel-janitors@vger.kernel.org
Subject: Re: [patch] perf/x86/intel/pt: cleanup error handling in pt_pmu_hw_init()
Date: Thu, 09 Apr 2015 14:54:40 +0000 [thread overview]
Message-ID: <20150409145440.GC15910@gmail.com> (raw)
In-Reply-To: <20150409090805.GG17605@mwanda>
* Dan Carpenter <dan.carpenter@oracle.com> wrote:
> On Thu, Apr 09, 2015 at 02:45:30PM +0200, Peter Zijlstra wrote:
> > On Thu, Apr 09, 2015 at 03:33:36PM +0300, Dan Carpenter wrote:
> > > Also I have come to despise "err" labels. They do one of three things:
> > >
> > > 1) Nothing. These are a pointless interruption for people reading the
> > > code from top to bottom because you wonder, "How is goto err
> > > different from return -ENOMEM?". You scroll down to the bottom and
> > > find that they are the same. Now you have lost your place and your
> > > train of thought.
> > >
> > > 2) One thing. In this case the label is poorly named, better to say
> > > "goto unlock".
> > >
> > > 3) Everything. This is a leading source of error handling bugs. It
> > > looks like this.
> > >
> > > err:
> > > kfree(foo);
> > > return ret;
> >
> > 4) unwind complex state; see for example copy_process(). You do not
> > want to endlessly duplicate the increasing cleanup for every exit.
>
> I *like* using gotos for unwinding. It's specifically the err:, out:,
> and bail: type labels I object to. [...]
Agreed, and I'd suggest you don't use poorly named and poorly
constructed labels.
> [...] If you unwind like:
>
> err_free_bar:
> kfree(foo->bar);
> err_free_foo:
> kfree(foo);
> return ret;
>
> That is less error prone.
That's how I name and structure unwind labels as well, and my
suggestion is to use something similar here in this code too, in
arch/x86/kernel/cpu/perf_event_intel_pt.c.
Agreed?
Thanks,
Ingo
next prev parent reply other threads:[~2015-04-09 14:54 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-09 9:08 [patch] perf/x86/intel/pt: cleanup error handling in pt_pmu_hw_init() Dan Carpenter
2015-04-09 12:02 ` Ingo Molnar
2015-04-09 12:33 ` Dan Carpenter
2015-04-09 12:45 ` Peter Zijlstra
2015-04-09 12:47 ` Alexander Shishkin
2015-04-09 13:30 ` Dan Carpenter
2015-04-09 14:54 ` Ingo Molnar [this message]
2015-04-09 15:27 ` Dan Carpenter
2015-04-11 8:37 ` Ingo Molnar
2015-04-11 11:03 ` Dan Carpenter
2015-04-12 9:38 ` Ingo Molnar
2015-04-12 9:51 ` Julia Lawall
2015-04-12 10:18 ` Ingo Molnar
2015-04-12 17:27 ` [tip:perf/core] perf/x86/intel/pt: Clean up the control flow " tip-bot for Ingo Molnar
2015-04-15 10:10 ` [patch] perf/x86/intel/pt: cleanup error handling " Alexander Shishkin
2015-04-15 10:27 ` Dan Carpenter
2015-04-15 10:50 ` Alexander Shishkin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150409145440.GC15910@gmail.com \
--to=mingo@kernel.org \
--cc=kernel-janitors@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.