On Sun, 2019-12-01 at 03:47 -0800, Matthew Wilcox wrote: > On Sat, Nov 30, 2019 at 01:21:08PM -0800, James Bottomley wrote: > > @@ -402,6 +403,10 @@ nfsd_setattr(struct svc_rqst *rqstp, struct > > svc_fh *fhp, struct iattr *iap, > > > > dentry = fhp->fh_dentry; > > inode = d_inode(dentry); > > + path = &(struct path){ > > + .mnt = fhp->fh_export->ex_path.mnt, > > + .dentry = dentry, > > + }; > > Is this really clearer than writing: > > path.mnt = fhp->fh_export->ex_path.mnt; > path.dentry = dentry; I'm not sure about clearer but certainly better: the general principle is always do named structure initialization, so in my version any unspecified fields are cleared. In your version they're set to whatever uninitialized data was on the stack. For struct path, it probably doesn't matter because it's only ever going to have two elements for all time, but in general it does. James