Re: [PATCH] cpu: Bool tests don't need comparisons

From: Ingo Molnar
Date: Mon Dec 03 2018 - 04:15:29 EST



* Wen Yang <wen.yang99@xxxxxxxxxx> wrote:

> This is the patch to the file cpu.c
> which fixes the following coccinelle warning:
>
> WARNING: Comparison to bool
>
> Signed-off-by: Wen Yang <wen.yang99@xxxxxxxxxx>
> CC: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> CC: Ingo Molnar <mingo@xxxxxxxxxx>
> CC: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
> CC: Josh Poimboeuf <jpoimboe@xxxxxxxxxx>
> CC: "Peter Zijlstra (Intel)" <peterz@xxxxxxxxxxxx>
> CC: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> CC: Mukesh Ojha <mojha@xxxxxxxxxxxxxx>
> CC: linux-kernel@xxxxxxxxxxxxxxx
> ---
> kernel/cpu.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/cpu.c b/kernel/cpu.c
> index 91d5c38eb7e5..5bdd7e150a11 100644
> --- a/kernel/cpu.c
> +++ b/kernel/cpu.c
> @@ -1650,7 +1650,7 @@ int __cpuhp_state_add_instance_cpuslocked(enum cpuhp_state state,
> lockdep_assert_cpus_held();
>
> sp = cpuhp_get_step(state);
> - if (sp->multi_instance == false)
> + if (!sp->multi_instance)
> return -EINVAL;
>

This is a *totally* bogus explanation.

This is an equivalent pattern to '== 0' which is commonly used.

The patch is still doing the right thing, but only accidentally, for
another reason, it's because we are using ->multi_instance in an
inconsistent fashion:

kernel/cpu.c: if (!step->multi_instance) {
kernel/cpu.c: if (sp->multi_instance == false)
kernel/cpu.c: if (!sp->multi_instance)
kernel/cpu.c: if (sp->multi_instance) {

But that's really just by accident - if all usages were of the
'== true/false' pattern then this wouldn't be necessary.

Thanks,

Ingo