There's a really odd comment in that thing: /* * Unhashed alias is able to exist because of revalidate() * called by lookup_fast. You can easily make this status * by calling create and lookup concurrently * In such case, we reuse an alias instead of new dentry */ and AFAICS it had been there since the original merge. What I don't understand is how the hell could revalidate result in that - exfat_d_revalidate() always returns 1 on any positive dentry and alias is obviously positive (it has the same inode as the one we are about to use). It mentions a way to reproduce that, but I don't understand what does that refer to; could you give details?