Re: [PATCH] drivers/usb: use READ_ONCE instead of deprecated ACCESS_ONCE

From: Mark Rutland
Date: Sun Nov 20 2016 - 07:11:57 EST


On Sun, Nov 20, 2016 at 10:39:32AM +0100, Greg KH wrote:
> On Sat, Nov 19, 2016 at 11:54:25AM -0800, Davidlohr Bueso wrote:
> > With the new standardized functions, we can replace all ACCESS_ONCE()
> > calls across relevant drivers/usb/.
> >
> > ACCESS_ONCE() does not work reliably on non-scalar types. For example
> > gcc 4.6 and 4.7 might remove the volatile tag for such accesses during
> > the SRA (scalar replacement of aggregates) step:

> If this is the case, why not just replacing the define for ACCESS_ONCE()
> with READ_ONCE() and then go back and just do a search/replace for the
> whole kernel all at once?
>
> Or just send Linus a patch for this all at once after -rc1 is out?

FWIW, I have a Coccinelle-generated patch for that [1].

... there are a few cases where it doesn't quite work (e.g. formatting in the
ath9k mac drivers), and I'm trying to put together a series [2] that fixes
those cases up before leaving the bulk to Coccinelle.

I hope to sort that out in the next few days.

Thanks,
Mark.

[1] https://git.kernel.org/cgit/linux/kernel/git/mark/linux.git/commit/?h=core/access-once&id=7154d3cd5f2ddcc029d1afadc472c5720408d678
[2] https://git.kernel.org/cgit/linux/kernel/git/mark/linux.git/log/?h=core/access-once