The kern_renameat() looks up the fvp using the DELETE flag, which causes

the removal of the name cache entry for fvp.

Reported by:	Anton Yuzhaninov <citrin citrin ru>
In collaboration with:	kib
MFC after:	1 week
This commit is contained in:
Peter Holm 2011-10-31 15:01:47 +00:00
parent 1f1928092d
commit 6890c3a990

View file

@ -1519,6 +1519,13 @@ relock:
cache_purge(fdvp);
}
error = ufs_dirremove(fdvp, fip, fcnp->cn_flags, 0);
/*
* As the relookup of the fvp is done in two steps:
* ufs_lookup_ino() and then VFS_VGET(), another thread might do a
* normal lookup of the from name just before the VFS_VGET() call,
* causing the cache entry to be re-instantiated.
*/
cache_purge(fvp);
unlockout:
vput(fdvp);