From: Gunnar Beutner Date: Thu, 16 Jun 2011 18:59:56 +0000 (+0200) Subject: Removed erroneous zfs_inode_destroy() calls from zfs_rmnode(). X-Git-Tag: zfs-0.6.0-rc5~35 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6f0cf71e0d191abb850a45f6d216cb5af158a6dd;p=zfs Removed erroneous zfs_inode_destroy() calls from zfs_rmnode(). iput_final() already calls zpl_inode_destroy() -> zfs_inode_destroy() for us after zfs_zinactive(), thus making sure that the inode is properly cleaned up. The zfs_inode_destroy() calls in zfs_rmnode() would lead to a double-free. Fixes #282 --- diff --git a/module/zfs/zfs_dir.c b/module/zfs/zfs_dir.c index 199e58cf7..58a18bcfc 100644 --- a/module/zfs/zfs_dir.c +++ b/module/zfs/zfs_dir.c @@ -614,7 +614,6 @@ zfs_rmnode(znode_t *zp) * Leave it in the unlinked set. */ zfs_znode_dmu_fini(zp); - zfs_inode_destroy(ZTOI(zp)); return; } @@ -629,7 +628,6 @@ zfs_rmnode(znode_t *zp) * Not enough space. Leave the file in the unlinked set. */ zfs_znode_dmu_fini(zp); - zfs_inode_destroy(ZTOI(zp)); return; } @@ -669,7 +667,6 @@ zfs_rmnode(znode_t *zp) */ dmu_tx_abort(tx); zfs_znode_dmu_fini(zp); - zfs_inode_destroy(ZTOI(zp)); goto out; }