All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V2] fscrypt: don't set policy for a dead directory
@ 2019-05-08  9:27 ` hongjiefang
  0 siblings, 0 replies; 7+ messages in thread
From: hongjiefang @ 2019-05-08  9:27 UTC (permalink / raw)
  To: tytso, jaegeuk, ebiggers; +Cc: linux-fscrypt, hongjiefang, stable

the directory maybe has been removed when enter fscrypt_ioctl_set_policy().
it this case, the empty_dir() check will return error for ext4 file system.

ext4_rmdir() sets i_size = 0, then ext4_empty_dir() reports an error
because 'inode->i_size < EXT4_DIR_REC_LEN(1) + EXT4_DIR_REC_LEN(2)'.
if the fs is mounted with errors=panic, it will trigger a panic issue.

add the check IS_DEADDIR() to fix this problem.

Fixes: 9bd8212f981e ("ext4 crypto: add encryption policy and password salt support")
Cc: <stable@vger.kernel.org> # v4.1+
Signed-off-by: hongjiefang <hongjiefang@asrmicro.com>
---
 fs/crypto/policy.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/fs/crypto/policy.c b/fs/crypto/policy.c
index bd7eaf9..a4eca6e 100644
--- a/fs/crypto/policy.c
+++ b/fs/crypto/policy.c
@@ -81,6 +81,8 @@ int fscrypt_ioctl_set_policy(struct file *filp, const void __user *arg)
 	if (ret == -ENODATA) {
 		if (!S_ISDIR(inode->i_mode))
 			ret = -ENOTDIR;
+		else if (IS_DEADDIR(inode))
+			ret = -ENOENT;
 		else if (!inode->i_sb->s_cop->empty_dir(inode))
 			ret = -ENOTEMPTY;
 		else
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2019-05-10  1:54 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-05-08  9:27 [PATCH V2] fscrypt: don't set policy for a dead directory hongjiefang
2019-05-08  9:27 ` hongjiefang
2019-05-08 15:56 ` Sasha Levin
2019-05-09 11:04   ` Fang Hongjie(方洪杰)
2019-05-09 19:22     ` Eric Biggers
2019-05-09 19:31 ` Eric Biggers
2019-05-10  1:54   ` Fang Hongjie(方洪杰)

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.