Re: [RFC PATCH] printk: Use ACCESS_ONCE() instead of a volatile type

From: Steven Rostedt
Date: Thu Nov 13 2014 - 22:51:45 EST


On Thu, 13 Nov 2014 19:41:00 -0800
Joe Perches <joe@xxxxxxxxxxx> wrote:

> On Thu, 2014-11-13 at 22:21 -0500, Pranith Kumar wrote:
> > Remove volatile type qualifier and use ACCESS_ONCE() in its place for each
> > access. Using volatile is not recommended as documented in
> > Documentation/volatile-considered-harmful.txt.
> >
> > Here logbuf_cpu is a local variable and it is not clear how it is being accessed
> > concurrently. We should remove volatile accesses entirely here, but for now make
> > a safer change of using ACCESS_ONCE().
>
> Not recommended does not mean "don't ever use".

I would argue that the use of volatile in open code is evil and prone
to bugs. I agree that this is one of the few occasions that this is not
the case.

>
> Forcing the volatile at each use site instead
> of the declaration isn't necessarily better.
>
> I think the code is more readable as-is but I'm
> not going to object if Andrew picks this up...
>

The ACCESS_ONCE() calls at each location makes it a bit uglier, but it
drives in the point of what that is doing. Where as the volatile may be
missed.

-- Steve

--
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/