Removed erroneous zfs_inode_destroy() calls from zfs_rmnode().
authorGunnar Beutner <gunnar@beutner.name>
Thu, 16 Jun 2011 18:59:56 +0000 (20:59 +0200)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 20 Jun 2011 17:30:17 +0000 (10:30 -0700)
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

module/zfs/zfs_dir.c

index 199e58c..58a18bc 100644 (file)
@@ -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;
        }