From: Eric Biggers Date: Thu, 26 Dec 2019 16:10:22 +0000 (-0600) Subject: ext4: only use fscrypt_zeroout_range() on regular files X-Git-Tag: v5.6-rc1~113^2~31 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=33b4cc2501d323feef3cc3ec9a084d80bef5b5e8;p=thirdparty%2Fkernel%2Flinux.git ext4: only use fscrypt_zeroout_range() on regular files fscrypt_zeroout_range() is only for encrypted regular files, not for encrypted directories or symlinks. Fortunately, currently it seems it's never called on non-regular files. But to be safe ext4 should explicitly check S_ISREG() before calling it. Signed-off-by: Eric Biggers Link: https://lore.kernel.org/r/20191226161022.53490-1-ebiggers@kernel.org Signed-off-by: Theodore Ts'o --- diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index d3e1539c680b9..73482fc865617 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -403,7 +403,7 @@ int ext4_issue_zeroout(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk, { int ret; - if (IS_ENCRYPTED(inode)) + if (IS_ENCRYPTED(inode) && S_ISREG(inode->i_mode)) return fscrypt_zeroout_range(inode, lblk, pblk, len); ret = sb_issue_zeroout(inode->i_sb, pblk, len, GFP_NOFS);