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;
     }