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 <mark.rutland@xxxxxxx> > Cc: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> > Cc: Anna Schumaker <anna.schumaker@xxxxxxxxxx> > Cc: J. Bruce Fields <bfields@xxxxxxxxxxxx> > Cc: Jeff Layton <jlayton@xxxxxxxxxxxxxxx> > Cc: David S. Miller <davem@xxxxxxxxxxxxx> > Cc: linux-nfs@xxxxxxxxxxxxxxx > Cc: netdev@xxxxxxxxxxxxxxx > --- > 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/1489574142-20856-1-git-send-email-mark.rutland@xxxxxxx > > 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 <jlayton@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html