ANDROID: sdcardfs: fix sdcardfs_destroy_inode for the inode RCU approach
authorGao Xiang <gaoxiang25@huawei.com>
Wed, 10 May 2017 15:01:15 +0000 (23:01 +0800)
committerStricted <info@stricted.net>
Thu, 11 Oct 2018 16:03:40 +0000 (18:03 +0200)
According to the following commits,
fs: icache RCU free inodes
vfs: fix the stupidity with i_dentry in inode destructors

sdcardfs_destroy_inode should be fixed for the fast path safety.

Signed-off-by: Gao Xiang <gaoxiang25@huawei.com>
Change-Id: I84f43c599209d23737c7e28b499dd121cb43636d

fs/sdcardfs/super.c

index a3393e959c63f9a7fbb73bb7a95fed1e4edf2848..8a9c9c7adca229b0f358407a3041354e590369dc 100644 (file)
@@ -192,11 +192,18 @@ static struct inode *sdcardfs_alloc_inode(struct super_block *sb)
        return &i->vfs_inode;
 }
 
-static void sdcardfs_destroy_inode(struct inode *inode)
+static void i_callback(struct rcu_head *head)
 {
+       struct inode *inode = container_of(head, struct inode, i_rcu);
+
        kmem_cache_free(sdcardfs_inode_cachep, SDCARDFS_I(inode));
 }
 
+static void sdcardfs_destroy_inode(struct inode *inode)
+{
+       call_rcu(&inode->i_rcu, i_callback);
+}
+
 /* sdcardfs inode cache constructor */
 static void init_once(void *obj)
 {