diff --git a/tsk/fs/ext2fs.c b/tsk/fs/ext2fs.c
index 4f6dcd8550cf365a5d7a540fdf0084efae6e6f74..3980792dcd72057d74741ea049f07f62f2b4c456 100644
--- a/tsk/fs/ext2fs.c
+++ b/tsk/fs/ext2fs.c
@@ -3177,7 +3177,7 @@ ext2fs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
     len = sizeof(ext2fs_sb);
     if ((ext2fs->fs = (ext2fs_sb *) tsk_malloc(len)) == NULL) {
         fs->tag = 0;
-        free(ext2fs);
+        tsk_fs_free((TSK_FS_INFO *)ext2fs);
         return NULL;
     }
 
@@ -3190,7 +3190,7 @@ ext2fs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
         tsk_error_set_errstr2("ext2fs_open: superblock");
         fs->tag = 0;
         free(ext2fs->fs);
-        free(ext2fs);
+        tsk_fs_free((TSK_FS_INFO *)ext2fs);
         return NULL;
     }
 
@@ -3200,7 +3200,7 @@ ext2fs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
     if (tsk_fs_guessu16(fs, ext2fs->fs->s_magic, EXT2FS_FS_MAGIC)) {
         fs->tag = 0;
         free(ext2fs->fs);
-        free(ext2fs);
+        tsk_fs_free((TSK_FS_INFO *)ext2fs);
         tsk_error_reset();
         tsk_error_set_errno(TSK_ERR_FS_MAGIC);
         tsk_error_set_errstr("not an EXTxFS file system (magic)");
@@ -3253,7 +3253,7 @@ ext2fs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
     if (fs->inum_count < 10) {
         fs->tag = 0;
         free(ext2fs->fs);
-        free(ext2fs);
+        tsk_fs_free((TSK_FS_INFO *)ext2fs);
         tsk_error_reset();
         tsk_error_set_errno(TSK_ERR_FS_MAGIC);
         tsk_error_set_errstr("Not an EXTxFS file system (inum count)");
@@ -3297,7 +3297,7 @@ ext2fs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
         tsk_getu32(fs->endian, ext2fs->fs->s_log_frag_size)) {
         fs->tag = 0;
         free(ext2fs->fs);
-        free(ext2fs);
+        tsk_fs_free((TSK_FS_INFO *)ext2fs);
         tsk_error_reset();
         tsk_error_set_errno(TSK_ERR_FS_UNSUPFUNC);
         tsk_error_set_errstr
diff --git a/tsk/fs/fatfs.c b/tsk/fs/fatfs.c
index 2ec0f7b8fb2560b18a6b750bc5eb24e0e6f9d7f3..1fdd2f5c36b1d31e4f7454ccb2bb8b474873eb64 100644
--- a/tsk/fs/fatfs.c
+++ b/tsk/fs/fatfs.c
@@ -1383,7 +1383,7 @@ fatfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
     fatsb = fatfs->sb = (fatfs_sb *) tsk_malloc(len);
     if (fatsb == NULL) {
         fs->tag = 0;
-        free(fatfs);
+        tsk_fs_free((TSK_FS_INFO *)fatfs);
         return NULL;
     }
 
@@ -1407,7 +1407,7 @@ fatfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
             tsk_error_set_errstr2("%s: boot sector", myname);
             fs->tag = 0;
             free(fatfs->sb);
-            free(fatfs);
+            tsk_fs_free((TSK_FS_INFO *)fatfs);
             return NULL;
         }
 
@@ -1422,7 +1422,7 @@ fatfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
             else {
                 fs->tag = 0;
                 free(fatsb);
-                free(fatfs);
+                tsk_fs_free((TSK_FS_INFO *)fatfs);
                 tsk_error_reset();
                 tsk_error_set_errno(TSK_ERR_FS_MAGIC);
                 tsk_error_set_errstr("Not a FATFS file system (magic)");
@@ -1471,7 +1471,7 @@ fatfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
                 fatfs->ssize);
         fs->tag = 0;
         free(fatsb);
-        free(fatfs);
+        tsk_fs_free((TSK_FS_INFO *)fatfs);
         return NULL;
     }
 
@@ -1489,7 +1489,7 @@ fatfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
                 fatfs->csize);
         fs->tag = 0;
         free(fatsb);
-        free(fatfs);
+        tsk_fs_free((TSK_FS_INFO *)fatfs);
         tsk_error_reset();
         tsk_error_set_errno(TSK_ERR_FS_MAGIC);
         tsk_error_set_errstr("Not a FATFS file system (cluster size)");
@@ -1504,7 +1504,7 @@ fatfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
                 fatfs->numfat);
         fs->tag = 0;
         free(fatsb);
-        free(fatfs);
+        tsk_fs_free((TSK_FS_INFO *)fatfs);
         tsk_error_reset();
         tsk_error_set_errno(TSK_ERR_FS_MAGIC);
         tsk_error_set_errstr("Not a FATFS file system (number of FATs)");
@@ -1533,7 +1533,7 @@ fatfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
                 fatfs->sectperfat);
         fs->tag = 0;
         free(fatsb);
-        free(fatfs);
+        tsk_fs_free((TSK_FS_INFO *)fatfs);
         tsk_error_reset();
         tsk_error_set_errno(TSK_ERR_FS_MAGIC);
         tsk_error_set_errstr
@@ -1555,7 +1555,7 @@ fatfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
 
         fs->tag = 0;
         free(fatsb);
-        free(fatfs);
+        tsk_fs_free((TSK_FS_INFO *)fatfs);
         return NULL;
     }
 
@@ -1615,7 +1615,7 @@ fatfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
             && (fatfs->clustcnt >= 4085)) {
             fs->tag = 0;
             free(fatsb);
-            free(fatfs);
+            tsk_fs_free((TSK_FS_INFO *)fatfs);
             tsk_error_reset();
             tsk_error_set_errno(TSK_ERR_FS_MAGIC);
             tsk_error_set_errstr
@@ -1630,7 +1630,7 @@ fatfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
     if ((ftype == TSK_FS_TYPE_FAT32) && (fatfs->numroot != 0)) {
         fs->tag = 0;
         free(fatsb);
-        free(fatfs);
+        tsk_fs_free((TSK_FS_INFO *)fatfs);
         tsk_error_reset();
         tsk_error_set_errno(TSK_ERR_FS_MAGIC);
         tsk_error_set_errstr
@@ -1643,7 +1643,7 @@ fatfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
     if ((ftype != TSK_FS_TYPE_FAT32) && (fatfs->numroot == 0)) {
         fs->tag = 0;
         free(fatsb);
-        free(fatfs);
+        tsk_fs_free((TSK_FS_INFO *)fatfs);
         tsk_error_reset();
         tsk_error_set_errno(TSK_ERR_FS_MAGIC);
         tsk_error_set_errstr
@@ -1662,7 +1662,7 @@ fatfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
         if (ftype != TSK_FS_TYPE_FAT32) {
             fs->tag = 0;
             free(fatsb);
-            free(fatfs);
+            tsk_fs_free((TSK_FS_INFO *)fatfs);
             tsk_error_reset();
             tsk_error_set_errno(TSK_ERR_FS_MAGIC);
             tsk_error_set_errstr
@@ -1689,7 +1689,7 @@ fatfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
                 tsk_error_set_errstr2("%s: FAT1", myname);
                 fs->tag = 0;
                 free(fatfs->sb);
-                free(fatfs);
+                tsk_fs_free((TSK_FS_INFO *)fatfs);
                 return NULL;
             }
 
@@ -1705,7 +1705,7 @@ fatfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
                 tsk_error_set_errstr2("%s: FAT2", myname);
                 fs->tag = 0;
                 free(fatfs->sb);
-                free(fatfs);
+                tsk_fs_free((TSK_FS_INFO *)fatfs);
                 return NULL;
             }
 
@@ -1718,7 +1718,7 @@ fatfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
             if (numDiffs > 25) {
                 fs->tag = 0;
                 free(fatsb);
-                free(fatfs);
+                tsk_fs_free((TSK_FS_INFO *)fatfs);
                 tsk_error_reset();
                 tsk_error_set_errno(TSK_ERR_FS_MAGIC);
                 tsk_error_set_errstr
@@ -1747,7 +1747,7 @@ fatfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
     else {
         fs->tag = 0;
         free(fatsb);
-        free(fatfs);
+        tsk_fs_free((TSK_FS_INFO *)fatfs);
         tsk_error_reset();
         tsk_error_set_errno(TSK_ERR_FS_ARG);
         tsk_error_set_errstr("Unknown FAT type in fatfs_open: %d\n",
diff --git a/tsk/fs/ffs.c b/tsk/fs/ffs.c
index f8439a90bb5b74d1d7a4cf1997f30cf5a5a08874..403cdb8f2c0569663cfae4dc575736e9fccb15fc 100644
--- a/tsk/fs/ffs.c
+++ b/tsk/fs/ffs.c
@@ -2016,7 +2016,7 @@ ffs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset, TSK_FS_TYPE_ENUM ftype)
     ffs->fs.sb1 = (ffs_sb1 *) tsk_malloc(len);
     if (ffs->fs.sb1 == NULL) {
         fs->tag = 0;
-        free(ffs);
+        tsk_fs_free((TSK_FS_INFO *)ffs);
         return NULL;
     }
 
@@ -2037,7 +2037,7 @@ ffs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset, TSK_FS_TYPE_ENUM ftype)
             (TSK_OFF_T) UFS2_SBOFF);
         fs->tag = 0;
         free(ffs->fs.sb1);
-        free(ffs);
+        tsk_fs_free((TSK_FS_INFO *)ffs);
         return NULL;
     }
 
@@ -2058,7 +2058,7 @@ ffs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset, TSK_FS_TYPE_ENUM ftype)
                 myname, (TSK_OFF_T) UFS2_SBOFF2);
             fs->tag = 0;
             free(ffs->fs.sb1);
-            free(ffs);
+            tsk_fs_free((TSK_FS_INFO *)ffs);
             return NULL;
         }
 
@@ -2078,7 +2078,7 @@ ffs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset, TSK_FS_TYPE_ENUM ftype)
                     myname, (TSK_OFF_T) UFS1_SBOFF);
                 fs->tag = 0;
                 free(ffs->fs.sb1);
-                free(ffs);
+                tsk_fs_free((TSK_FS_INFO *)ffs);
                 return NULL;
             }
             if (tsk_fs_guessu32(fs, ffs->fs.sb1->magic, UFS1_FS_MAGIC)) {
@@ -2089,7 +2089,7 @@ ffs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset, TSK_FS_TYPE_ENUM ftype)
                     fprintf(stderr, "ufs_open: No UFS magic found\n");
                 fs->tag = 0;
                 free(ffs->fs.sb1);
-                free(ffs);
+                tsk_fs_free((TSK_FS_INFO *)ffs);
                 return NULL;
             }
             else {
@@ -2148,7 +2148,7 @@ ffs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset, TSK_FS_TYPE_ENUM ftype)
             fprintf(stderr, "ufs_open: invalid fragment or block size\n");
         fs->tag = 0;
         free(ffs->fs.sb1);
-        free(ffs);
+        tsk_fs_free((TSK_FS_INFO *)ffs);
         return NULL;
     }
 
@@ -2160,7 +2160,7 @@ ffs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset, TSK_FS_TYPE_ENUM ftype)
             fprintf(stderr, "ufs_open: fragment / block size mismatch\n");
         fs->tag = 0;
         free(ffs->fs.sb1);
-        free(ffs);
+        tsk_fs_free((TSK_FS_INFO *)ffs);
         return NULL;
     }
 
diff --git a/tsk/fs/hfs.c b/tsk/fs/hfs.c
index 99b55a5e93b53b4303882e95babd85852779628e..6c3e09163381f4f5c2827588ea4d431e15b3a6a2 100644
--- a/tsk/fs/hfs.c
+++ b/tsk/fs/hfs.c
@@ -5971,7 +5971,7 @@ hfs_close(TSK_FS_INFO * fs)
     tsk_release_lock(&(hfs->metadata_dir_cache_lock));
     tsk_deinit_lock(&(hfs->metadata_dir_cache_lock));
 
-    free(hfs);
+    tsk_fs_free((TSK_FS_INFO *)hfs);
 }
 
 /* hfs_open - open an hfs file system
@@ -6018,7 +6018,7 @@ hfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
     len = sizeof(hfs_plus_vh);
     if ((hfs->fs = (hfs_plus_vh *) tsk_malloc(len)) == NULL) {
         fs->tag = 0;
-        free(hfs);
+        tsk_fs_free((TSK_FS_INFO *)hfs);
         return NULL;
     }
 
@@ -6027,7 +6027,7 @@ hfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
         tsk_error_set_errstr2("hfs_open: superblock");
         fs->tag = 0;
         free(hfs->fs);
-        free(hfs);
+        tsk_fs_free((TSK_FS_INFO *)hfs);
         return NULL;
     }
 
@@ -6040,7 +6040,7 @@ hfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
 
         fs->tag = 0;
         free(hfs->fs);
-        free(hfs);
+        tsk_fs_free((TSK_FS_INFO *)hfs);
         tsk_error_set_errno(TSK_ERR_FS_MAGIC);
         tsk_error_set_errstr("not an HFS+ file system (magic)");
         return NULL;
@@ -6088,7 +6088,7 @@ hfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
 
             fs->tag = 0;
             free(hfs->fs);
-            free(hfs);
+            tsk_fs_free((TSK_FS_INFO *)hfs);
 
             /* just re-open with the new offset, then record the offset */
             fs_info2 =
@@ -6103,7 +6103,7 @@ hfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
         else {
             fs->tag = 0;
             free(hfs->fs);
-            free(hfs);
+            tsk_fs_free((TSK_FS_INFO *)hfs);
             tsk_error_set_errno(TSK_ERR_FS_MAGIC);
             tsk_error_set_errstr
                 ("HFS file systems (other than wrappers HFS+/HFSX file systems) are not supported");
@@ -6169,7 +6169,7 @@ hfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
                 HFS_CATALOG_FILE_ID)) == NULL) {
         fs->tag = 0;
         free(hfs->fs);
-        free(hfs);
+        tsk_fs_free((TSK_FS_INFO *)hfs);
         return NULL;
     }
 
@@ -6181,7 +6181,7 @@ hfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
         fs->tag = 0;
         tsk_fs_file_close(hfs->catalog_file);
         free(hfs->fs);
-        free(hfs);
+        tsk_fs_free((TSK_FS_INFO *)hfs);
         tsk_error_errstr2_concat
             (" - Data Attribute not found in Catalog File");
         return NULL;
@@ -6199,7 +6199,7 @@ hfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
         tsk_error_set_errstr2("hfs_open: Error reading catalog header");
         fs->tag = 0;
         free(hfs->fs);
-        free(hfs);
+        tsk_fs_free((TSK_FS_INFO *)hfs);
         return NULL;
     }
 
diff --git a/tsk/fs/ntfs.c b/tsk/fs/ntfs.c
index 237189f3b8ff2ca79b7ce885528ce807923b33c6..3fe3cb87e6ecb274ca18e8a7746c12a0c8f064ea 100755
--- a/tsk/fs/ntfs.c
+++ b/tsk/fs/ntfs.c
@@ -4721,7 +4721,7 @@ ntfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
     ntfs->fs = (ntfs_sb *) tsk_malloc(len);
     if (ntfs->fs == NULL) {
         fs->tag = 0;
-        free(ntfs);
+        tsk_fs_free((TSK_FS_INFO *)ntfs);
         return NULL;
     }
 
@@ -4734,7 +4734,7 @@ ntfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
         tsk_error_set_errstr2("%s: Error reading boot sector.", myname);
         fs->tag = 0;
         free(ntfs->fs);
-        free(ntfs);
+        tsk_fs_free((TSK_FS_INFO *)ntfs);
         return NULL;
     }
 
@@ -4742,7 +4742,7 @@ ntfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
     if (tsk_fs_guessu16(fs, ntfs->fs->magic, NTFS_FS_MAGIC)) {
         fs->tag = 0;
         free(ntfs->fs);
-        free(ntfs);
+        tsk_fs_free((TSK_FS_INFO *)ntfs);
         tsk_error_reset();
         tsk_error_set_errno(TSK_ERR_FS_MAGIC);
         tsk_error_set_errstr("Not a NTFS file system (magic)");
@@ -4769,7 +4769,7 @@ ntfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
                 ntfs->ssize_b);
         fs->tag = 0;
         free(ntfs->fs);
-        free(ntfs);
+        tsk_fs_free((TSK_FS_INFO *)ntfs);
         return NULL;
     }
 
@@ -4790,7 +4790,7 @@ ntfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
                 ntfs->fs->csize);
         fs->tag = 0;
         free(ntfs->fs);
-        free(ntfs);
+        tsk_fs_free((TSK_FS_INFO *)ntfs);
         return NULL;
     }
 
@@ -4810,7 +4810,7 @@ ntfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
             fprintf(stderr, "ntfs_open: invalid volume size: 0\n");
         fs->tag = 0;
         free(ntfs->fs);
-        free(ntfs);
+        tsk_fs_free((TSK_FS_INFO *)ntfs);
         return NULL;
     }
 
@@ -4833,7 +4833,7 @@ ntfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
     if ((ntfs->mft_rsize_b == 0) || (ntfs->mft_rsize_b % 512)) {
         fs->tag = 0;
         free(ntfs->fs);
-        free(ntfs);
+        tsk_fs_free((TSK_FS_INFO *)ntfs);
         tsk_error_reset();
         tsk_error_set_errno(TSK_ERR_FS_MAGIC);
         tsk_error_set_errstr
@@ -4852,7 +4852,7 @@ ntfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
     if ((ntfs->idx_rsize_b == 0) || (ntfs->idx_rsize_b % 512)) {
         fs->tag = 0;
         free(ntfs->fs);
-        free(ntfs);
+        tsk_fs_free((TSK_FS_INFO *)ntfs);
         tsk_error_reset();
         tsk_error_set_errno(TSK_ERR_FS_MAGIC);
         tsk_error_set_errstr
@@ -4869,7 +4869,7 @@ ntfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
     if (tsk_getu64(fs->endian, ntfs->fs->mft_clust) > fs->last_block) {
         fs->tag = 0;
         free(ntfs->fs);
-        free(ntfs);
+        tsk_fs_free((TSK_FS_INFO *)ntfs);
         tsk_error_reset();
         tsk_error_set_errno(TSK_ERR_FS_MAGIC);
         tsk_error_set_errstr
@@ -4927,7 +4927,7 @@ ntfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
             tsk_fs_file_open_meta(fs, NULL, NTFS_MFT_MFT)) == NULL) {
         fs->tag = 0;
         free(ntfs->fs);
-        free(ntfs);
+        tsk_fs_free((TSK_FS_INFO *)ntfs);
         if (tsk_verbose)
             fprintf(stderr,
                 "ntfs_open: Error opening $MFT (%s)\n", tsk_error_get());
@@ -4945,7 +4945,7 @@ ntfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
         fs->tag = 0;
         tsk_fs_file_close(ntfs->mft_file);
         free(ntfs->fs);
-        free(ntfs);
+        tsk_fs_free((TSK_FS_INFO *)ntfs);
         tsk_error_errstr2_concat(" - Data Attribute not found in $MFT");
         if (tsk_verbose)
             fprintf(stderr,
@@ -4971,7 +4971,7 @@ ntfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
         fs->tag = 0;
         tsk_fs_file_close(ntfs->mft_file);
         free(ntfs->fs);
-        free(ntfs);
+        tsk_fs_free((TSK_FS_INFO *)ntfs);
         if (tsk_verbose)
             fprintf(stderr,
                 "ntfs_open: Error loading file system version ((%s)\n",
@@ -4984,7 +4984,7 @@ ntfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
         fs->tag = 0;
         tsk_fs_file_close(ntfs->mft_file);
         free(ntfs->fs);
-        free(ntfs);
+        tsk_fs_free((TSK_FS_INFO *)ntfs);
         if (tsk_verbose)
             fprintf(stderr, "ntfs_open: Error loading block bitmap (%s)\n",
                 tsk_error_get());
@@ -4999,7 +4999,7 @@ ntfs_open(TSK_IMG_INFO * img_info, TSK_OFF_T offset,
         fs->tag = 0;
         tsk_fs_file_close(ntfs->mft_file);
         free(ntfs->fs);
-        free(ntfs);
+        tsk_fs_free((TSK_FS_INFO *)ntfs);
         if (tsk_verbose)
             fprintf(stderr, "ntfs_open: Error loading Secure Info (%s)\n",
                 tsk_error_get());