Re: [PATCH 1/2] lockdep missing barrier()

Andrew Morton
2007-01-24T04:28:23Z

On Tue, 16 Jan 2007 12:56:24 -0500
Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> wrote:

> This patch adds a barrier() to lockdep.c lockdep_recursion updates. This
> variable behaves like the preemption count and should therefore use similar
> memory barriers.
>
> This patch applies on 2.6.20-rc4-git3.
>
> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
>
> --- a/kernel/lockdep.c
> +++ b/kernel/lockdep.c
> @@ -166,12 +166,14 @@ static struct list_head chainhash_table[CHAINHASH_SIZE];
> void lockdep_off(void)
> {
> current->lockdep_recursion++;
> + barrier();
> }
>
> EXPORT_SYMBOL(lockdep_off);
>
> void lockdep_on(void)
> {
> + barrier();
> current->lockdep_recursion--;
> }

I am allergic to undocumented barriers. It is often unobvious what the
barrier is supposed to protect against, yielding mystifying code. This is
one such case.

Please add code comments.