[GIT PULL] fscrypt updates for 5.11

From: Eric Biggers
Date: Mon Dec 14 2020 - 00:51:51 EST


The following changes since commit 09162bc32c880a791c6c0668ce0745cf7958f576:

Linux 5.10-rc4 (2020-11-15 16:44:31 -0800)

are available in the Git repository at:

https://git.kernel.org/pub/scm/fs/fscrypt/fscrypt.git tags/fscrypt-for-linus

for you to fetch changes up to a14d0b6764917b21ee6fdfd2a8a4c2920fbefcce:

fscrypt: allow deleting files with unsupported encryption policy (2020-12-02 18:25:01 -0800)

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

This release there are some fixes for longstanding problems, as well as
some cleanups:

- Fix a race condition where a duplicate filename could be created in an
encrypted directory if a syscall that creates a new filename raced
with the directory's encryption key being added.

- Allow deleting files that use an unsupported encryption policy.

- Simplify the locking for 'struct fscrypt_master_key'.

- Remove kernel-internal constants from the UAPI header.

As usual, all these patches have been in linux-next with no reported
issues, and I've tested them with xfstests.

----------------------------------------------------------------
Eric Biggers (16):
fscrypt: remove kernel-internal constants from UAPI header
fscrypt: add fscrypt_is_nokey_name()
ext4: prevent creating duplicate encrypted filenames
f2fs: prevent creating duplicate encrypted filenames
ubifs: prevent creating duplicate encrypted filenames
fscrypt: remove unnecessary calls to fscrypt_require_key()
fscrypt: simplify master key locking
ext4: remove ext4_dir_open()
f2fs: remove f2fs_dir_open()
ubifs: remove ubifs_dir_open()
ext4: don't call fscrypt_get_encryption_info() from dx_show_leaf()
fscrypt: introduce fscrypt_prepare_readdir()
fscrypt: move body of fscrypt_prepare_setattr() out-of-line
fscrypt: move fscrypt_require_key() to fscrypt_private.h
fscrypt: unexport fscrypt_get_encryption_info()
fscrypt: allow deleting files with unsupported encryption policy

fs/crypto/fname.c | 8 +++-
fs/crypto/fscrypt_private.h | 56 +++++++++++++++-------
fs/crypto/hooks.c | 55 +++++++++++----------
fs/crypto/keyring.c | 10 +---
fs/crypto/keysetup.c | 44 +++++++++++------
fs/crypto/policy.c | 27 +++++++----
fs/ext4/dir.c | 16 ++-----
fs/ext4/namei.c | 13 ++---
fs/f2fs/dir.c | 10 +---
fs/f2fs/f2fs.h | 2 +
fs/ubifs/dir.c | 28 +++++------
include/linux/fscrypt.h | 112 ++++++++++++++++++++++++++++---------------
include/uapi/linux/fscrypt.h | 5 +-
13 files changed, 227 insertions(+), 159 deletions(-)