mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-11-27 01:11:31 +00:00
When freeing an inode that lost race getting added to the inode cache we must not call into ->destroy_inode, because that would delete the inode that won the race from the inode cache radix tree. This patch uses splits a new xfs_inode_free helper out of xfs_ireclaim and uses that plus __destroy_inode to make sure we really only free the memory allocted for the inode that lost the race, and not mess with the inode cache state. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Eric Sandeen <sandeen@sandeen.net> Reported-by: Alex Samad <alex@samad.com.au> Reported-by: Andrew Randrianasulu <randrik@mail.ru> Reported-by: Stephane <sharnois@max-t.com> Reported-by: Tommy <tommy@news-service.com> Reported-by: Miah Gregory <mace@darksilence.net> Reported-by: Gabriel Barazer <gabriel@oxeva.fr> Reported-by: Leandro Lucarella <llucax@gmail.com> Reported-by: Daniel Burr <dburr@fami.com.au> Reported-by: Nickolay <newmail@spaces.ru> Reported-by: Michael Guntsche <mike@it-loops.com> Reported-by: Dan Carley <dan.carley+linuxkern-bugs@gmail.com> Reported-by: Michael Ole Olsen <gnu@gmx.net> Reported-by: Michael Weissenbacher <mw@dermichi.com> Reported-by: Martin Spott <Martin.Spott@mgras.net> Reported-by: Christian Kujau <lists@nerdbynature.de> Tested-by: Michael Guntsche <mike@it-loops.com> Tested-by: Dan Carley <dan.carley+linuxkern-bugs@gmail.com> Tested-by: Christian Kujau <lists@nerdbynature.de> |
||
|---|---|---|
| .. | ||
| linux-2.6 | ||
| quota | ||
| support | ||
| Kconfig | ||
| Makefile | ||
| xfs.h | ||
| xfs_acl.h | ||
| xfs_ag.h | ||
| xfs_alloc.c | ||
| xfs_alloc.h | ||
| xfs_alloc_btree.c | ||
| xfs_alloc_btree.h | ||
| xfs_arch.h | ||
| xfs_attr.c | ||
| xfs_attr.h | ||
| xfs_attr_leaf.c | ||
| xfs_attr_leaf.h | ||
| xfs_attr_sf.h | ||
| xfs_bit.c | ||
| xfs_bit.h | ||
| xfs_bmap.c | ||
| xfs_bmap.h | ||
| xfs_bmap_btree.c | ||
| xfs_bmap_btree.h | ||
| xfs_btree.c | ||
| xfs_btree.h | ||
| xfs_btree_trace.c | ||
| xfs_btree_trace.h | ||
| xfs_buf_item.c | ||
| xfs_buf_item.h | ||
| xfs_da_btree.c | ||
| xfs_da_btree.h | ||
| xfs_dfrag.c | ||
| xfs_dfrag.h | ||
| xfs_dinode.h | ||
| xfs_dir2.c | ||
| xfs_dir2.h | ||
| xfs_dir2_block.c | ||
| xfs_dir2_block.h | ||
| xfs_dir2_data.c | ||
| xfs_dir2_data.h | ||
| xfs_dir2_leaf.c | ||
| xfs_dir2_leaf.h | ||
| xfs_dir2_node.c | ||
| xfs_dir2_node.h | ||
| xfs_dir2_sf.c | ||
| xfs_dir2_sf.h | ||
| xfs_dir2_trace.c | ||
| xfs_dir2_trace.h | ||
| xfs_dmapi.h | ||
| xfs_dmops.c | ||
| xfs_error.c | ||
| xfs_error.h | ||
| xfs_extfree_item.c | ||
| xfs_extfree_item.h | ||
| xfs_filestream.c | ||
| xfs_filestream.h | ||
| xfs_fs.h | ||
| xfs_fsops.c | ||
| xfs_fsops.h | ||
| xfs_ialloc.c | ||
| xfs_ialloc.h | ||
| xfs_ialloc_btree.c | ||
| xfs_ialloc_btree.h | ||
| xfs_iget.c | ||
| xfs_inode.c | ||
| xfs_inode.h | ||
| xfs_inode_item.c | ||
| xfs_inode_item.h | ||
| xfs_inum.h | ||
| xfs_iomap.c | ||
| xfs_iomap.h | ||
| xfs_itable.c | ||
| xfs_itable.h | ||
| xfs_log.c | ||
| xfs_log.h | ||
| xfs_log_priv.h | ||
| xfs_log_recover.c | ||
| xfs_log_recover.h | ||
| xfs_mount.c | ||
| xfs_mount.h | ||
| xfs_mru_cache.c | ||
| xfs_mru_cache.h | ||
| xfs_quota.h | ||
| xfs_refcache.h | ||
| xfs_rename.c | ||
| xfs_rtalloc.c | ||
| xfs_rtalloc.h | ||
| xfs_rw.c | ||
| xfs_rw.h | ||
| xfs_sb.h | ||
| xfs_trans.c | ||
| xfs_trans.h | ||
| xfs_trans_ail.c | ||
| xfs_trans_buf.c | ||
| xfs_trans_extfree.c | ||
| xfs_trans_inode.c | ||
| xfs_trans_item.c | ||
| xfs_trans_priv.h | ||
| xfs_trans_space.h | ||
| xfs_types.h | ||
| xfs_utils.c | ||
| xfs_utils.h | ||
| xfs_vnodeops.c | ||
| xfs_vnodeops.h | ||