Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1509373 > unrolled thread

[PATCH 4.8 131/140] fscrypto: lock inode while setting encryption policy

Started byGreg Kroah-Hartman <gregkh@linuxfoundation.org>
First post2016-10-26 15:20 +0200
Last post2016-10-26 15:20 +0200
Articles 1 — 1 participant

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [PATCH 4.8 131/140] fscrypto: lock inode while setting encryption policy Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2016-10-26 15:20 +0200

#1509373 — [PATCH 4.8 131/140] fscrypto: lock inode while setting encryption policy

FromGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Date2016-10-26 15:20 +0200
Subject[PATCH 4.8 131/140] fscrypto: lock inode while setting encryption policy
Message-ID<swwhA-4d2-55@gated-at.bofh.it>
4.8-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Eric Biggers <ebiggers@google.com>

commit 8906a8223ad4909b391c5628f7991ebceda30e52 upstream.

i_rwsem needs to be acquired while setting an encryption policy so that
concurrent calls to FS_IOC_SET_ENCRYPTION_POLICY are correctly
serialized (especially the ->get_context() + ->set_context() pair), and
so that new files cannot be created in the directory during or after the
->empty_dir() check.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/crypto/policy.c |    4 ++++
 1 file changed, 4 insertions(+)

--- a/fs/crypto/policy.c
+++ b/fs/crypto/policy.c
@@ -109,6 +109,8 @@ int fscrypt_process_policy(struct file *
 	if (ret)
 		return ret;
 
+	inode_lock(inode);
+
 	if (!inode_has_encryption_context(inode)) {
 		if (!S_ISDIR(inode->i_mode))
 			ret = -EINVAL;
@@ -127,6 +129,8 @@ int fscrypt_process_policy(struct file *
 		ret = -EINVAL;
 	}
 
+	inode_unlock(inode);
+
 	mnt_drop_write_file(filp);
 	return ret;
 }

[toc] | [standalone]


Back to top | Article view | linux.kernel


csiph-web