fscrypt: clean up and improve dentry revalidation
authorEric Biggers <ebiggers@google.com>
Wed, 20 Mar 2019 18:39:09 +0000 (11:39 -0700)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 17 Apr 2019 13:48:46 +0000 (09:48 -0400)
commit6cc248684d3d23bbd073ae2fa73d3416c0558909
tree1fe0b6a608ccdae37511795fd20857e45435622d
parente37a784d8b6a1e726de5ddc7b4809c086a08db09
fscrypt: clean up and improve dentry revalidation

Make various improvements to fscrypt dentry revalidation:

- Don't try to handle the case where the per-directory key is removed,
  as this can't happen without the inode (and dentries) being evicted.

- Flag ciphertext dentries rather than plaintext dentries, since it's
  ciphertext dentries that need the special handling.

- Avoid doing unnecessary work for non-ciphertext dentries.

- When revalidating ciphertext dentries, try to set up the directory's
  i_crypt_info to make sure the key is really still absent, rather than
  invalidating all negative dentries as the previous code did.  An old
  comment suggested we can't do this for locking reasons, but AFAICT
  this comment was outdated and it actually works fine.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/crypto/crypto.c
fs/crypto/hooks.c
include/linux/dcache.h
include/linux/fscrypt.h