Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d7d75352 authored by Jaegeuk Kim's avatar Jaegeuk Kim
Browse files

fscrypto: use dget_parent() in fscrypt_d_revalidate()



This patch updates fscrypto along with the below ext4 crypto change.

Fixes: 3d43bcfe ("ext4 crypto: use dget_parent() in ext4_d_revalidate()")
Cc: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent bf162006
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -345,13 +345,17 @@ EXPORT_SYMBOL(fscrypt_zeroout_range);
 */
static int fscrypt_d_revalidate(struct dentry *dentry, unsigned int flags)
{
	struct inode *dir = d_inode(dentry->d_parent);
	struct fscrypt_info *ci = dir->i_crypt_info;
	struct dentry *dir;
	struct fscrypt_info *ci;
	int dir_has_key, cached_with_key;

	if (!dir->i_sb->s_cop->is_encrypted(dir))
	dir = dget_parent(dentry);
	if (!d_inode(dir)->i_sb->s_cop->is_encrypted(d_inode(dir))) {
		dput(dir);
		return 0;
	}

	ci = d_inode(dir)->i_crypt_info;
	if (ci && ci->ci_keyring_key &&
	    (ci->ci_keyring_key->flags & ((1 << KEY_FLAG_INVALIDATED) |
					  (1 << KEY_FLAG_REVOKED) |
@@ -363,6 +367,7 @@ static int fscrypt_d_revalidate(struct dentry *dentry, unsigned int flags)
	cached_with_key = dentry->d_flags & DCACHE_ENCRYPTED_WITH_KEY;
	spin_unlock(&dentry->d_lock);
	dir_has_key = (ci != NULL);
	dput(dir);

	/*
	 * If the dentry was cached without the key, and it is a