Re: [PATCH] checkpatch: Test for kmalloc/memset(0) pairs

From: Dave Jones
Date: Sat Mar 19 2011 - 15:40:35 EST


On Thu, Mar 17, 2011 at 09:15:48PM -0600, Jonathan Corbet wrote:
> On Thu, 17 Mar 2011 22:52:24 -0400
> Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
>
> > The use of kzalloc() is preferred over kmalloc/memset(0) pairs.
> >
> > When a match is made with "memset(p, 0, s);" a search back through the
> > patch hunk is made looking for "p = kmalloc(s,". If that is found, then
> > a warning is given, suggesting to use kzalloc() instead.
>
> The Coccinelle stuff already has a lot of this kind of test. See, for
> example, scripts/coccinelle/api/alloc/kzalloc-simple.cocci. Suppose
> there is some way all this nice analysis infrastructure could be
> integrated instead of duplicated? Or am I just a crazy dreamer?

Maybe. Coccinelle is one of those tools that seems to be perpetually
on my "to look into" list that I never get around to.


Something that has crossed my mind over the last few days was the idea
of splitting checkpatch into two tools.
One for checking CodingStyle issues, and one for checking for actual
code problems like the memset example.

The motivation for such is that I think it's pretty clear that many maintainers
never run checkpatch on patches they queue up before pushing to Linus...

$ scripts/checkpatch.pl ~/Mail/upstream/2.6.39/head-March-18-2011 | wc -l
2361

The bulk of this is all "missing space here" "don't put a space there" type
fluff that most maintainers just don't care about. Any valuable warnings
are lost in the noise. If we had a separate tool to check for real flaws,
(or even a way to suppress the stylistic warnings from the existing one)
maybe more maintainers would run their changes through it.

I dunno, maybe I'm just a crazy dreamer too, but I think many people
have written checkpatch off as useless in its current incarnation.

Dave

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/