Re: [PATCH 1/2] stop_machine: check work->done while handling enqueued works

From: Namhyung Kim
Date: Fri Feb 08 2013 - 03:21:32 EST


Hi Hillf,

On Fri, 8 Feb 2013 11:39:56 +0800, Hillf Danton wrote:
> The comment just above cpu_stop_signal_done() says it is uncertain that
> the input @done is valid, and the works enqueued through the function
> stop_one_cpu_nowait() do carry no done, thus we have to check if it is
> valid when updating work result.

The only user of stop_one_cpu_nowait() is the scheduler active balancer
and active_load_balance_cpu_stop() always returns 0. But I think this
change makes its sense and the code evolves, so:

Reviewed-by: Namhyung Kim <namhyung@xxxxxxxxxx>

Thanks,
Namhyung

>
> Signed-off-by: Hillf Danton <dhillf@xxxxxxxxx>
> ---
>
> --- a/kernel/stop_machine.c Thu Feb 7 20:03:10 2013
> +++ b/kernel/stop_machine.c Fri Feb 8 11:07:40 2013
> @@ -279,7 +279,7 @@ repeat:
> preempt_disable();
>
> ret = fn(arg);
> - if (ret)
> + if (ret && done != NULL)
> done->ret = ret;
>
> /* restore preemption and check it's still balanced */
> --
--
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/