From: Al Viro Date: Mon, 7 Nov 2011 16:39:57 +0000 (+0000) Subject: vfs: d_invalidate() should leave mountpoints alone X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=50e696308c3fb18a4a0dae7b3a4d47469149c919;p=openwrt%2Fstaging%2Fblogic.git vfs: d_invalidate() should leave mountpoints alone Signed-off-by: Al Viro Signed-off-by: Linus Torvalds --- diff --git a/fs/dcache.c b/fs/dcache.c index 274f13e2f094..a901c6901bce 100644 --- a/fs/dcache.c +++ b/fs/dcache.c @@ -546,9 +546,11 @@ int d_invalidate(struct dentry * dentry) * would make it unreachable from the root, * we might still populate it if it was a * working directory or similar). + * We also need to leave mountpoints alone, + * directory or not. */ - if (dentry->d_count > 1) { - if (dentry->d_inode && S_ISDIR(dentry->d_inode->i_mode)) { + if (dentry->d_count > 1 && dentry->d_inode) { + if (S_ISDIR(dentry->d_inode->i_mode) || d_mountpoint(dentry)) { spin_unlock(&dentry->d_lock); return -EBUSY; }