From: "Luis R. Rodriguez" <mcgrof@suse.com>
To: Dan Carpenter <dan.carpenter@oracle.com>
Cc: Johannes Berg <johannes@sipsolutions.net>,
Julia Lawall <julia.lawall@lip6.fr>,
SF Markus Elfring <elfring@users.sourceforge.net>,
Lino Sanfilippo <LinoSanfilippo@gmx.de>,
Olof Johansson <olof@lixom.net>,
netdev@vger.kernel.org, backports@vger.kernel.org,
LKML <linux-kernel@vger.kernel.org>,
kernel-janitors@vger.kernel.org
Subject: Re: net-PA Semi: Deletion of unnecessary checks before the function call "pci_dev_put"
Date: Tue, 2 Dec 2014 21:18:25 +0100 [thread overview]
Message-ID: <20141202201825.GP25677@wotan.suse.de> (raw)
In-Reply-To: <20141202183509.GI4994@mwanda>
On Tue, Dec 02, 2014 at 09:35:09PM +0300, Dan Carpenter wrote:
> On Tue, Dec 02, 2014 at 05:53:28PM +0100, Johannes Berg wrote:
> > On Mon, 2014-12-01 at 21:34 +0100, Julia Lawall wrote:
> >
> > > > So this kind of evolution is no problem for the (automated) backports
> > > > using the backports project - although it can be difficult to detect
> > > > such a thing is needed.
> > >
> > > That is exactly the problem...
> >
> > I'm not convinced though that it should stop such progress in mainline.
>
> Is it progress?
I like to think of progress as using tools to help fix code where we know
it can be made simpler with a small ammendment: if you can extend the tools
to also vet for safety for backports to avoid crashes even better.
So its a small evolution but we can do better, which is the point you and
Julia are making.
> These patches match the code look simpler by passing
> hiding the NULL check inside a function call. Calling pci_dev_put(NULL)
> doesn't make sense. Just because a sanity check exists doesn't mean we
> should do insane things.
It'd crash the system if the function call didn't have the check in place
but having the code in question call pci_dev_put(NULL) is also ludicrious.
Either way in this case I think we shouldn't go beyond analyzing the
function call and if the error check was present before as it is a real
case that has introduced crashes before which Julia wanted to flag.
> It's easy enough to store which functions have a sanity check in a
> database,
This is easy but it adds complexities which I'd prefer to keep on
some other people's workstations. For the developer I think we should
strive to only have: a) git b) Coccinelle c) smatch.
> but to rememember all that as a human being trying to read the
> code is impossible.
Agreed. The problem statement presented by Julia is part of the effort
of addressing the "how do we evolve faster" problem on Linux kernel development,
what you describe adds to the mix of the complexities, and while Oleg does
note that part of this is academic there are those of us who are making things
which are academic immediately practical and a reality for Linux. This is also
how we evolve faster :)
> If we really wanted to make this code cleaner we would introduce more
> error labels with better names.
Can you describe a bit more what you mean here? If we had a label *in code*
on the caller, perhaps a comment, I can see tool-wise how it'd remove the
requirement for a database for immediate analysis for safety here, ie,
we hunt for a label on the code; but other than that its unclear what
you mean here.
If you folks agree with my simplication tool analsysi for safety can
we devise a tag for whitelisting this check for a series of routines?
Where would we put it, in the kernel or a tools package? If in the kernel
we could end up sharing it, so I think that's be better. Perhaps scripts/safety/ ?
Maybe use a header that describes the safety check that is vetted by the rule
present, followed by a list of routines vetted?
Then the Cocci file can preload this and a rule that wants this paranoid check
can include this db file for safety ?
The safety here would require vetting thirough history in git that the routine
has a check in place throughout the routines's history up to a certain point.
I propose we only care up to what kernels are listed on kernel.org as supported.
Luis
next prev parent reply other threads:[~2014-12-02 20:18 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <5307CAA2.8060406@users.sourceforge.net>
[not found] ` <alpine.DEB.2.02.1402212321410.2043@localhost6.localdomain6>
[not found] ` <530A086E.8010901@users.sourceforge.net>
[not found] ` <alpine.DEB.2.02.1402231635510.1985@localhost6.localdomain6>
[not found] ` <530A72AA.3000601@users.sourceforge.net>
[not found] ` <alpine.DEB.2.02.1402240658210.2090@localhost6.localdomain6>
[not found] ` <530B5FB6.6010207@users.sourceforge.net>
[not found] ` <alpine.DEB.2.10.1402241710370.2074@hadrien>
[not found] ` <530C5E18.1020800@users.sourceforge.net>
[not found] ` <alpine.DEB.2.10.1402251014170.2080@hadrien>
[not found] ` <530CD2C4.4050903@users.sourceforge.net>
[not found] ` <alpine.DEB.2.10.1402251840450.7035@hadrien>
[not found] ` <530CF8FF.8080600@users.sourceforge.net>
[not found] ` <alpine.DEB.2.02.1402252117150.2047@localhost6.localdomain6>
[not found] ` <530DD06F.4090703@users.sourceforge.net>
[not found] ` <alpine.DEB.2.02.1402262129250.2221@localhost6.localdomain6>
[not found] ` <5317A59D.4@users.sourceforge.net>
[not found] ` <547A09B1.9090102@users.sourceforge.net>
[not found] ` <547B579F.10709@gmx.de>
2014-12-01 1:34 ` net-PA Semi: Deletion of unnecessary checks before the function call "pci_dev_put" SF Markus Elfring
2014-12-01 20:29 ` Johannes Berg
2014-12-01 20:34 ` Julia Lawall
2014-12-02 16:53 ` Johannes Berg
2014-12-02 18:35 ` Dan Carpenter
2014-12-02 20:18 ` Luis R. Rodriguez [this message]
2014-12-02 18:45 ` Luis R. Rodriguez
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=20141202201825.GP25677@wotan.suse.de \
--to=mcgrof@suse.com \
--cc=LinoSanfilippo@gmx.de \
--cc=backports@vger.kernel.org \
--cc=dan.carpenter@oracle.com \
--cc=elfring@users.sourceforge.net \
--cc=johannes@sipsolutions.net \
--cc=julia.lawall@lip6.fr \
--cc=kernel-janitors@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=olof@lixom.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox