On Mon, Apr 21, 2025 at 05:29:47PM +0100, Al Viro wrote: > What's to prevent the 'beneath' case from getting mnt mount --move'd > away *AND* the ex-parent from getting unmounted while we are blocked > in inode_lock? At this point we are not holding any locks whatsoever > (and all mount-related locks nest inside inode_lock(), so we couldn't > hold them there anyway). > > Hit that race and watch a very unhappy umount... While we are at it, in normal case inode_unlock() in unlock_mount() is safe since we have dentry (and associated mount) pinned by struct path we'd fed to matching lock_mount(). No longer true for the 'beneath' case, AFAICS...