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: debian/0.7.9-2~629^2~3 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=6f0cf71e0d191abb850a45f6d216cb5af158a6dd;hp=df30f56639f96175ba71d83b4456ccf410c46542;p=mirror_zfs-debian.git 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 199e58cf..58a18bcf 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; }