On Sat, May 8, 2021 at 2:06 PM Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote: > > On Sat, May 08, 2021 at 01:39:45PM -0700, Linus Torvalds wrote: > > > +static inline int prepend_entries(struct prepend_buffer *b, const struct path *path, const struct path *root, struct mount *mnt) > > If anything, s/path/dentry/, since vfsmnt here will be equal to &mnt->mnt all along. Too subtle for me. And is it? Because mnt is from mnt = real_mount(path->mnt); earlier, while vfsmount is plain "path->mnt". > > + return 2; // detached or not attached yet > > + break; > > ? Leftover. Good catch. > > + parent = dentry->d_parent; > > + prefetch(parent); > > + error = prepend_name(b, &dentry->d_name); > > + if (error) > > + break; > > return error, surely? Surely. Bad conversion to the separate function where I missed one of the "break" statements. > FWIW, if we go that way, I would make that No arguments against that - I tried to keep it with the same structure it had when it was inside prepend_path(). Which I obviously wasn't very good at (see your fixes above ;), but it was *meant* to be a minimal patch with no structural change. Linus