diff options
Diffstat (limited to 'fs/dcache.c')
-rw-r--r-- | fs/dcache.c | 6 |
1 files changed, 4 insertions, 2 deletions
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) | |||
546 | * would make it unreachable from the root, | 546 | * would make it unreachable from the root, |
547 | * we might still populate it if it was a | 547 | * we might still populate it if it was a |
548 | * working directory or similar). | 548 | * working directory or similar). |
549 | * We also need to leave mountpoints alone, | ||
550 | * directory or not. | ||
549 | */ | 551 | */ |
550 | if (dentry->d_count > 1) { | 552 | if (dentry->d_count > 1 && dentry->d_inode) { |
551 | if (dentry->d_inode && S_ISDIR(dentry->d_inode->i_mode)) { | 553 | if (S_ISDIR(dentry->d_inode->i_mode) || d_mountpoint(dentry)) { |
552 | spin_unlock(&dentry->d_lock); | 554 | spin_unlock(&dentry->d_lock); |
553 | return -EBUSY; | 555 | return -EBUSY; |
554 | } | 556 | } |