Commit d788e516 authored by Shyam Prasad N's avatar Shyam Prasad N Committed by Steve French
Browse files

cifs: release cached dentries only if mount is complete



During cifs_kill_sb, we first dput all the dentries that we have cached.
However this function can also get called for mount failures.
So dput the cached dentries only if the filesystem mount is complete.
i.e. cifs_sb->root is populated.

Fixes: 5e9c89d4 ("cifs: Grab a reference for the dentry of the cached directory during the lifetime of the cache")
Signed-off-by: default avatarShyam Prasad N <sprasad@microsoft.com>
Reviewed-by: default avatarRonnie Sahlberg <lsahlber@redhat.com>
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
parent 994fd530
Loading
Loading
Loading
Loading
+15 −13
Original line number Diff line number Diff line
@@ -266,9 +266,6 @@ static void cifs_kill_sb(struct super_block *sb)
	 * before we kill the sb.
	 */
	if (cifs_sb->root) {
		dput(cifs_sb->root);
		cifs_sb->root = NULL;
	}
		node = rb_first(root);
		while (node != NULL) {
			tlink = rb_entry(node, struct tcon_link, tl_rbnode);
@@ -283,6 +280,11 @@ static void cifs_kill_sb(struct super_block *sb)
			node = rb_next(node);
		}

		/* finally release root dentry */
		dput(cifs_sb->root);
		cifs_sb->root = NULL;
	}

	kill_anon_super(sb);
	cifs_umount(cifs_sb);
}