Merge branch 'fix_verify_push' of https://github.com/gwendalcr/fio
[fio.git] / blktrace.c
index f7a9ae3bc1f5f5c9e2195b2fc21e91d8ed6f4b0c..64a610a95944c9ec1e5d4fdaba56b987e24c7943 100644 (file)
@@ -719,9 +719,11 @@ int merge_blktrace_iologs(struct thread_data *td)
        /* setup output file */
        merge_fp = fopen(td->o.merge_blktrace_file, "w");
        merge_buf = malloc(128 * 1024);
+       if (!merge_buf)
+               goto err_out_file;
        ret = setvbuf(merge_fp, merge_buf, _IOFBF, 128 * 1024);
        if (ret)
-               goto err_out_file;
+               goto err_merge_buf;
 
        /* setup input files */
        str = ptr = strdup(td->o.read_iolog_file);
@@ -731,6 +733,7 @@ int merge_blktrace_iologs(struct thread_data *td)
                if (bcs[i].fd < 0) {
                        log_err("fio: could not open file: %s\n", name);
                        ret = bcs[i].fd;
+                       free(str);
                        goto err_file;
                }
                bcs[i].fifo = fifo_alloc(TRACE_FIFO_SIZE);
@@ -738,11 +741,13 @@ int merge_blktrace_iologs(struct thread_data *td)
 
                if (!is_blktrace(name, &bcs[i].swap)) {
                        log_err("fio: file is not a blktrace: %s\n", name);
+                       free(str);
                        goto err_file;
                }
 
                ret = read_trace(td, &bcs[i]);
                if (ret < 0) {
+                       free(str);
                        goto err_file;
                } else if (!ret) {
                        merge_finish_file(bcs, i, &nr_logs);
@@ -784,10 +789,11 @@ err_file:
                fifo_free(bcs[i].fifo);
                close(bcs[i].fd);
        }
+err_merge_buf:
+       free(merge_buf);
 err_out_file:
        fflush(merge_fp);
        fclose(merge_fp);
-       free(merge_buf);
 err_param:
        free(bcs);