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

Commit 4bcc4865 authored by Eric Biggers's avatar Eric Biggers Committed by Jaegeuk Kim
Browse files

fscrypt: remove 'ci' parameter from fscrypt_put_encryption_info()



fscrypt_put_encryption_info() is only called when evicting an inode, so
the 'struct fscrypt_info *ci' parameter is always NULL, and there cannot
be races with other threads.  This was cruft left over from the broken
key revocation code.  Remove the unused parameter and the cmpxchg().

Also remove the #ifdefs around the fscrypt_put_encryption_info() calls,
since fscrypt_notsupp.h defines a no-op stub for it.

Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
parent 69e5234f
Loading
Loading
Loading
Loading
+3 −13
Original line number Diff line number Diff line
@@ -355,19 +355,9 @@ int fscrypt_get_encryption_info(struct inode *inode)
}
EXPORT_SYMBOL(fscrypt_get_encryption_info);

void fscrypt_put_encryption_info(struct inode *inode, struct fscrypt_info *ci)
void fscrypt_put_encryption_info(struct inode *inode)
{
	struct fscrypt_info *prev;

	if (ci == NULL)
		ci = READ_ONCE(inode->i_crypt_info);
	if (ci == NULL)
		return;

	prev = cmpxchg(&inode->i_crypt_info, ci, NULL);
	if (prev != ci)
		return;

	put_crypt_info(ci);
	put_crypt_info(inode->i_crypt_info);
	inode->i_crypt_info = NULL;
}
EXPORT_SYMBOL(fscrypt_put_encryption_info);
+1 −3
Original line number Diff line number Diff line
@@ -1069,9 +1069,7 @@ void ext4_clear_inode(struct inode *inode)
		jbd2_free_inode(EXT4_I(inode)->jinode);
		EXT4_I(inode)->jinode = NULL;
	}
#ifdef CONFIG_EXT4_FS_ENCRYPTION
	fscrypt_put_encryption_info(inode, NULL);
#endif
	fscrypt_put_encryption_info(inode);
}

static struct inode *ext4_nfs_get_inode(struct super_block *sb,
+1 −1
Original line number Diff line number Diff line
@@ -585,7 +585,7 @@ void f2fs_evict_inode(struct inode *inode)
			!exist_written_data(sbi, inode->i_ino, ORPHAN_INO));
	}
out_clear:
	fscrypt_put_encryption_info(inode, NULL);
	fscrypt_put_encryption_info(inode);
	clear_inode(inode);
}

+1 −3
Original line number Diff line number Diff line
@@ -379,9 +379,7 @@ static void ubifs_evict_inode(struct inode *inode)
	}
done:
	clear_inode(inode);
#ifdef CONFIG_UBIFS_FS_ENCRYPTION
	fscrypt_put_encryption_info(inode, NULL);
#endif
	fscrypt_put_encryption_info(inode);
}

static void ubifs_dirty_inode(struct inode *inode, int flags)
+1 −2
Original line number Diff line number Diff line
@@ -105,8 +105,7 @@ static inline int fscrypt_get_encryption_info(struct inode *inode)
	return -EOPNOTSUPP;
}

static inline void fscrypt_put_encryption_info(struct inode *inode,
					       struct fscrypt_info *ci)
static inline void fscrypt_put_encryption_info(struct inode *inode)
{
	return;
}
Loading