]> git.proxmox.com Git - mirror_zfs-debian.git/commitdiff
Fix usage of zsb after free
authorBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 9 Sep 2011 17:24:55 +0000 (10:24 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 9 Sep 2011 17:29:48 +0000 (10:29 -0700)
Caught by code inspection, the variable zsb was referenced after
being freed.  Move the kmem_free() to the end of the function.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
module/zfs/zfs_znode.c

index dfbe11aca91c29f5bc69eeed8700426ae82a9927..0443b30653347a4322ce2de0d9f9df2202107999 100644 (file)
@@ -1527,20 +1527,19 @@ zfs_create_fs(objset_t *os, cred_t *cr, nvlist_t *zplprops, dmu_tx_t *tx)
 
        atomic_set(&ZTOI(rootzp)->i_count, 0);
        sa_handle_destroy(rootzp->z_sa_hdl);
-       kmem_free(sb, sizeof (struct super_block));
-       kmem_free(zsb, sizeof (zfs_sb_t));
        kmem_cache_free(znode_cache, rootzp);
 
        /*
         * Create shares directory
         */
-
        error = zfs_create_share_dir(zsb, tx);
-
        ASSERT(error == 0);
 
        for (i = 0; i != ZFS_OBJ_MTX_SZ; i++)
                mutex_destroy(&zsb->z_hold_mtx[i]);
+
+       kmem_free(sb, sizeof (struct super_block));
+       kmem_free(zsb, sizeof (zfs_sb_t));
 }
 #endif /* _KERNEL */