From: Linus Torvalds Date: Wed, 8 May 2019 04:28:04 +0000 (-0700) Subject: Merge tag 'fscrypt_for_linus' of git://git.kernel.org/pub/scm/fs/fscrypt/fscrypt X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=a9fbcd6728837268784439ad0b02ede2c024c516;p=linux.git Merge tag 'fscrypt_for_linus' of git://git./fs/fscrypt/fscrypt Pull fscrypt updates from Ted Ts'o: "Clean up fscrypt's dcache revalidation support, and other miscellaneous cleanups" * tag 'fscrypt_for_linus' of git://git.kernel.org/pub/scm/fs/fscrypt/fscrypt: fscrypt: cache decrypted symlink target in ->i_link vfs: use READ_ONCE() to access ->i_link fscrypt: fix race where ->lookup() marks plaintext dentry as ciphertext fscrypt: only set dentry_operations on ciphertext dentries fs, fscrypt: clear DCACHE_ENCRYPTED_NAME when unaliasing directory fscrypt: fix race allowing rename() and link() of ciphertext dentries fscrypt: clean up and improve dentry revalidation fscrypt: use READ_ONCE() to access ->i_crypt_info fscrypt: remove WARN_ON_ONCE() when decryption fails fscrypt: drop inode argument from fscrypt_get_ctx() --- a9fbcd6728837268784439ad0b02ede2c024c516 diff --cc fs/ext4/super.c index 3681cb737e9d9,5b92054bf8ea0..f71b5254a990a --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@@ -1111,8 -1107,12 +1111,9 @@@ static int ext4_drop_inode(struct inod return drop; } -static void ext4_i_callback(struct rcu_head *head) +static void ext4_free_in_core_inode(struct inode *inode) { - struct inode *inode = container_of(head, struct inode, i_rcu); - + fscrypt_free_inode(inode); - kmem_cache_free(ext4_inode_cachep, EXT4_I(inode)); } diff --cc fs/f2fs/super.c index 9924eac762548,11b3a039a1881..4c55d2ea9df36 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@@ -1000,8 -1000,12 +1000,9 @@@ static void f2fs_dirty_inode(struct ino f2fs_inode_dirtied(inode, false); } -static void f2fs_i_callback(struct rcu_head *head) +static void f2fs_free_inode(struct inode *inode) { - struct inode *inode = container_of(head, struct inode, i_rcu); - + fscrypt_free_inode(inode); - kmem_cache_free(f2fs_inode_cachep, F2FS_I(inode)); } diff --cc fs/ubifs/super.c index c2307c423638c,19fd210987457..632f02d4d660d --- a/fs/ubifs/super.c +++ b/fs/ubifs/super.c @@@ -272,10 -272,14 +272,13 @@@ static struct inode *ubifs_alloc_inode( return &ui->vfs_inode; }; -static void ubifs_i_callback(struct rcu_head *head) +static void ubifs_free_inode(struct inode *inode) { - struct inode *inode = container_of(head, struct inode, i_rcu); struct ubifs_inode *ui = ubifs_inode(inode); + kfree(ui->data); + fscrypt_free_inode(inode); + kmem_cache_free(ubifs_inode_slab, ui); }