Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 72772a3b authored by David Chinner's avatar David Chinner Committed by Lachlan McIlroy
Browse files

[XFS] fix inode leak in xfs_iget_core()



If the radix_tree_preload() fails, we need to destroy the inode we just
read in before trying again. This could leak xfs_vnode structures when
there is memory pressure. Noticed by Christoph Hellwig.

SGI-PV: 977823
SGI-Modid: xfs-linux-melb:xfs-kern:30606a

Signed-off-by: default avatarDavid Chinner <dgc@sgi.com>
Signed-off-by: default avatarLachlan McIlroy <lachlan@sgi.com>
Signed-off-by: default avatarChristoph Hellwig <hch@infradead.org>
parent 92d9cd10
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -235,6 +235,7 @@ xfs_iget_core(
	 */
	 */
	new_icl = kmem_zone_alloc(xfs_icluster_zone, KM_SLEEP);
	new_icl = kmem_zone_alloc(xfs_icluster_zone, KM_SLEEP);
	if (radix_tree_preload(GFP_KERNEL)) {
	if (radix_tree_preload(GFP_KERNEL)) {
		xfs_idestroy(ip);
		delay(1);
		delay(1);
		goto again;
		goto again;
	}
	}