Re: [PATCH] module: clean up initialization of variable

Steven Rostedt
2009-01-06T02:02:22Z

On Tue, 6 Jan 2009, Rusty Russell wrote:

> On Tuesday 06 January 2009 07:00:25 Steven Rostedt wrote:
> > This is sloppy initialization because it initializes, not only in an
> > if condition, but also as the second part of a complex conditional.
> >
> > This patch makes the code a bit easier to read.
> ...
> > /* Suck in entire file: we'll want most of it. */
> > /* vmalloc barfs on "unusual" numbers. Check here */
> > - if (len > 64 * 1024 * 1024 || (hdr = vmalloc(len)) == NULL)
> > + if (len > 64 * 1024 * 1024)
> > + return ERR_PTR(-ENOMEM);
> > + hdr = vmalloc(len);
> > + if (hdr == NULL)
> > return ERR_PTR(-ENOMEM);
> > if (copy_from_user(hdr, umod, len) != 0) {
> > err = -EFAULT;
>
> This line is not accidental nor casually written: the two statements
> are deliberately entwined. It is a succint complaint against the
> vagaries of vmalloc.
>
> So this patch is a messup, not a cleanup.

It is not that much of a messup. I did not realize that the code was
a political protest against the horrors of vmalloc ;-)

>
> But it's really upset me because it is lazy and timid: and too much
> kernel code is becoming mired in such scars. Instead of "how do I kill
> this warning and get it in the merge window" you should be thinking "how
> do I make the kernel better", and "I wonder if vmalloc still has this
> problem"...
>
> And I so look forward to the warm fuzzies I get when applying a real
> cleanup patch.

Well, I'm not about to go solve the vmalloc issues (not today anyway). But
I'll go and see if I can get the branch tracer macro to work on all
versions of gcc.

Thanks,

-- Steve