]> www.infradead.org Git - users/sagi/nvme-cli.git/commitdiff
Fixing Memory Leak
authorLakshmiNarayanand <Lakshmi_Narayanan_Du@dell.com>
Thu, 21 Jan 2016 11:28:28 +0000 (16:58 +0530)
committerLakshmiNarayanand <Lakshmi_Narayanan_Du@dell.com>
Thu, 21 Jan 2016 11:28:28 +0000 (16:58 +0530)
nvme.c

diff --git a/nvme.c b/nvme.c
index d957621ba178bb351c081f243e0b963e767728c6..10251a9522d7cfe8ba72f2fc1e8ae5d64ee8bc2a 100644 (file)
--- a/nvme.c
+++ b/nvme.c
@@ -2834,12 +2834,15 @@ static int submit_io(int opcode, char *command, const char *desc,
                mbuffer = malloc(cfg.metadata_size);
        if ((opcode & 1) && read(dfd, (void *)buffer, cfg.data_size) < 0) {
                fprintf(stderr, "failed to read data buffer from input file\n");
+               free(buffer);
                return EINVAL;
        }
        if ((opcode & 1) && cfg.metadata_size &&
                                read(mfd, (void *)mbuffer, cfg.metadata_size) < 0) {
                fprintf(stderr, "failed to read meta-data buffer from input file\n");
-               return EINVAL;
+               err = EINVAL;
+               goto free_and_return;
+               
        }
 
        io.opcode = opcode;
@@ -2876,11 +2879,13 @@ static int submit_io(int opcode, char *command, const char *desc,
        else {
                if (!(opcode & 1) && write(dfd, (void *)buffer, cfg.data_size) < 0) {
                        fprintf(stderr, "failed to write buffer to output file\n");
-                       return EINVAL;
+                       err = EINVAL;
+                       goto free_and_return;
                } else if (!(opcode & 1) && cfg.metadata_size &&
                                write(mfd, (void *)mbuffer, cfg.metadata_size) < 0) {
                        fprintf(stderr, "failed to write meta-data buffer to output file\n");
-                       return EINVAL;
+                       err = EINVAL;
+                       goto free_and_return;
                } else
                        fprintf(stderr, "%s: Success\n", command);
        }