On Mon, Nov 29, 2021 at 01:46:07PM -0500, Chuck Lever wrote: > To address this error: > > CC [M] fs/nfsd/filecache.o > CHECK /home/cel/src/linux/linux/fs/nfsd/filecache.c > /home/cel/src/linux/linux/fs/nfsd/filecache.c:772:9: error: incompatible types in comparison expression (different address spaces): > /home/cel/src/linux/linux/fs/nfsd/filecache.c:772:9: struct net [noderef] __rcu * > /home/cel/src/linux/linux/fs/nfsd/filecache.c:772:9: struct net * > > The "net" field in struct nfsd_fcache_disposal is not annotated as > requiring an RCU assignment, so replace the macro that includes an > invocation of rcu_check_sparse() with an equivalent that does not. > > Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> >From an RCU perspective: Acked-by: Paul E. McKenney <paulmck@xxxxxxxxxx> But it would be good to get someone more familiar with the code to look at this. Thanx, Paul > --- > fs/nfsd/filecache.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/nfsd/filecache.c b/fs/nfsd/filecache.c > index fdf89fcf1a0c..3b172eda0e9a 100644 > --- a/fs/nfsd/filecache.c > +++ b/fs/nfsd/filecache.c > @@ -772,7 +772,7 @@ nfsd_alloc_fcache_disposal(struct net *net) > static void > nfsd_free_fcache_disposal(struct nfsd_fcache_disposal *l) > { > - rcu_assign_pointer(l->net, NULL); > + WRITE_ONCE(l->net, NULL); > cancel_work_sync(&l->work); > nfsd_file_dispose_list(&l->freeme); > kfree_rcu(l, rcu); >