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

Rusty Russell
2009-01-06T01:23:16Z

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.

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.

Thanks,
Rusty.