On Wed, 18 Jun 2025 06:27:47 +0100, Al Viro wrote: > Note that anything that calls __d_add(dentry, inode) with is_bad_inode(inode) > (or d_add(), or d_instantiate(), or d_splice_alias() under the same conditions) > is also FUBAR. > > So's anything that calls make_bad_inode() on a struct inode that might be > in process of being passed to one of those functions by another thread. > > This is fundamentally wrong; bad inodes are not supposed to end up attached > to dentries. As far as I know, pick_link() is used to resolve the target path of a symbolic link (symlink). Can you explain why pick_link() is executed on a directory or a regular file?