On Thu, 2018-05-03 at 14:50 +0100, Mark Rutland wrote: > Currently net/sunrpc/xprtmultipath.c is the only file outside of arch/ > headers and asm-generic/ headers to include <asm/cmpxhcg.h>, apparently > for the use of cmpxchg_relaxed(). > > However, many architectures do not provide cmpxchg_relaxed() in their > <asm/cmpxhcg.h>, and it is necessary to include <linux/atomic.h> to get > this definition, as noted in Documentation/core-api/atomic_ops.rst: > > If someone wants to use xchg(), cmpxchg() and their variants, > linux/atomic.h should be included rather than asm/cmpxchg.h, unless > the code is in arch/* and can take care of itself. > > Evidently we're getting the right header this via some transitive > include today, but this isn't something we can/should rely upon, > especially with ongoing rework of the atomic headers for KASAN > instrumentation. > > Let's fix the code to include <linux/atomic.h>, avoiding fragility. > > Signed-off-by: Mark Rutland <[email protected]> > Cc: Trond Myklebust <[email protected]> > Cc: Anna Schumaker <[email protected]> > Cc: J. Bruce Fields <[email protected]> > Cc: Jeff Layton <[email protected]> > Cc: David S. Miller <[email protected]> > Cc: [email protected] > Cc: [email protected] > --- > net/sunrpc/xprtmultipath.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > I sent this about a year ago [1], but got no response. This still applies atop > of v4.17-rc3. > > I'm currently trying to implement instrumented atomics for arm64, and it would > be great to have this fixed. > > Mark. > > [1] > https://lkml.kernel.org/r/[email protected] > > diff --git a/net/sunrpc/xprtmultipath.c b/net/sunrpc/xprtmultipath.c > index e2d64c7138c3..d897f41be244 100644 > --- a/net/sunrpc/xprtmultipath.c > +++ b/net/sunrpc/xprtmultipath.c > @@ -13,7 +13,7 @@ > #include <linux/rcupdate.h> > #include <linux/rculist.h> > #include <linux/slab.h> > -#include <asm/cmpxchg.h> > +#include <linux/atomic.h> > #include <linux/spinlock.h> > #include <linux/sunrpc/xprt.h> > #include <linux/sunrpc/addr.h>
Looks fine. Reviewed-by: Jeff Layton <[email protected]>
