Bläddra i källkod

fix race in d_splice_alias()

rehashing the negative placeholder opens a race with d_lookup();
we unhash it almost immediately (by d_move()), but the race
window is there.  Since d_move() doesn't rely on target being
hashed, we don't need that d_rehash() at all.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Al Viro 15 år sedan
förälder
incheckning
4919c5e45a
1 ändrade filer med 0 tillägg och 1 borttagningar
  1. 0 1
      fs/dcache.c

+ 0 - 1
fs/dcache.c

@@ -1222,7 +1222,6 @@ struct dentry *d_splice_alias(struct inode *inode, struct dentry *dentry)
 			BUG_ON(!(new->d_flags & DCACHE_DISCONNECTED));
 			BUG_ON(!(new->d_flags & DCACHE_DISCONNECTED));
 			spin_unlock(&dcache_lock);
 			spin_unlock(&dcache_lock);
 			security_d_instantiate(new, inode);
 			security_d_instantiate(new, inode);
-			d_rehash(dentry);
 			d_move(new, dentry);
 			d_move(new, dentry);
 			iput(inode);
 			iput(inode);
 		} else {
 		} else {