Fix leak of directory handle in find_add_disk_slaves() error case
authorJens Axboe <axboe@fb.com>
Fri, 11 Apr 2014 17:31:17 +0000 (11:31 -0600)
committerJens Axboe <axboe@fb.com>
Fri, 11 Apr 2014 17:31:17 +0000 (11:31 -0600)
Signed-off-by: Jens Axboe <axboe@fb.com>
diskutil.c

index cbde42e908f71629cd9575e783fb4d390554f369..5170915c91d5309eeae539b2cc32e9531c7c16d4 100644 (file)
@@ -239,6 +239,7 @@ static void find_add_disk_slaves(struct thread_data *td, char *path,
                linklen = readlink(temppath, slavepath, PATH_MAX - 1);
                if (linklen  < 0) {
                        perror("readlink() for slave device.");
                linklen = readlink(temppath, slavepath, PATH_MAX - 1);
                if (linklen  < 0) {
                        perror("readlink() for slave device.");
+                       closedir(dirhandle);
                        return;
                }
                slavepath[linklen] = '\0';
                        return;
                }
                slavepath[linklen] = '\0';
@@ -246,6 +247,7 @@ static void find_add_disk_slaves(struct thread_data *td, char *path,
                sprintf(temppath, "%s/%s/dev", slavesdir, slavepath);
                if (read_block_dev_entry(temppath, &majdev, &mindev)) {
                        perror("Error getting slave device numbers.");
                sprintf(temppath, "%s/%s/dev", slavesdir, slavepath);
                if (read_block_dev_entry(temppath, &majdev, &mindev)) {
                        perror("Error getting slave device numbers.");
+                       closedir(dirhandle);
                        return;
                }
 
                        return;
                }