Re: [PATCH] rcu: remove unused variable in boot_cpu_state_init

From: Arnd Bergmann
Date: Thu Jun 22 2017 - 04:59:10 EST


On Thu, Jun 22, 2017 at 9:59 AM, Ingo Molnar <mingo@xxxxxxxxxx> wrote:
>
> So, to continue this side thought about uninitialized_var(), it is dangerous
> because the following buggy pattern does not generate a compiler warning:
>
> long uninitialized_var(error);
>
> ...
>
> if (error)
> return error;
>
>
> ... and still there are over 290 uses of uninitialized_var() in the kernel - and
> any of them could turn into a silent but real uninitialized variable bugs due to
> subsequent changes.

Right, absolutely agreed on that. A related problem however is blindly
initializing variables to NULL to get rid of uninitialized variable warnings,
such as

struct subsystem_specific *obj = NULL;
if (function_argument > 10)
goto err;
obj = create_obj();
...
err:
clean_up(obj->member);


I've seen a couple of variations of that problem, so simply outlawing
uninitialized_var() will only solve a subset of these issues, and ideally
we should also make sure that initializations at declaration time are
used properly, and not just to shut up compiler warnings.

Arnd