In the Linux kernel, the following vulnerability has been resolved: nfs: return EISDIR on nfs3_proc_create if d_alias is a dir If we found an alias through nfs3_do_create/nfs_add_or_obtain /d_splice_alias which happens to be a dir dentry, we don't return any error, and simply forget about this alias, but the original dentry we were adding and passed as parameter remains negative. This later causes an oops on nfs_atomic_open_v23/finish_open since we supply a negative dentry to do_dentry_open. This has been observed running lustre-racer, where dirs and files are created/removed concurrently with the same name and O_EXCL is not used to open files (frequent file redirection). While d_splice_alias typically returns a directory alias or NULL, we explicitly check d_is_dir() to ensure that we don't attempt to perform file operations (like finish_open) on a directory inode, which triggers the observed oops.
https://git.kernel.org/stable/c/9ee1770fcb2f1b48354622b926e7dc10222805f5
https://git.kernel.org/stable/c/7e2963773760a664684435201960dd2fb712f1b5
https://git.kernel.org/stable/c/410666a298c34ebd57256fde6b24c96bd23059a2
https://git.kernel.org/stable/c/203c792cb4315360d49973ae2e57feeb6d3dcf7e