diff options
Diffstat (limited to 'ipc/mqueue.c')
-rw-r--r-- | ipc/mqueue.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/ipc/mqueue.c b/ipc/mqueue.c index 035f4399edbc..14fb6d67e6a3 100644 --- a/ipc/mqueue.c +++ b/ipc/mqueue.c | |||
@@ -237,11 +237,18 @@ static struct inode *mqueue_alloc_inode(struct super_block *sb) | |||
237 | return &ei->vfs_inode; | 237 | return &ei->vfs_inode; |
238 | } | 238 | } |
239 | 239 | ||
240 | static void mqueue_destroy_inode(struct inode *inode) | 240 | static void mqueue_i_callback(struct rcu_head *head) |
241 | { | 241 | { |
242 | struct inode *inode = container_of(head, struct inode, i_rcu); | ||
243 | INIT_LIST_HEAD(&inode->i_dentry); | ||
242 | kmem_cache_free(mqueue_inode_cachep, MQUEUE_I(inode)); | 244 | kmem_cache_free(mqueue_inode_cachep, MQUEUE_I(inode)); |
243 | } | 245 | } |
244 | 246 | ||
247 | static void mqueue_destroy_inode(struct inode *inode) | ||
248 | { | ||
249 | call_rcu(&inode->i_rcu, mqueue_i_callback); | ||
250 | } | ||
251 | |||
245 | static void mqueue_evict_inode(struct inode *inode) | 252 | static void mqueue_evict_inode(struct inode *inode) |
246 | { | 253 | { |
247 | struct mqueue_inode_info *info; | 254 | struct mqueue_inode_info *info; |