diff options
author | Mateusz Kusiak <mateusz.kusiak@intel.com> | 2024-02-20 11:56:07 +0100 |
---|---|---|
committer | Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com> | 2024-02-23 12:43:07 +0100 |
commit | b8f5523a795b8f7e56dfbc139ce7f64728b67726 (patch) | |
tree | 7ae6daf1ecfaae162f97230199ed7cc848d483b9 /Create.c | |
parent | Add understanding output section in man (diff) | |
download | mdadm-b8f5523a795b8f7e56dfbc139ce7f64728b67726.tar.xz mdadm-b8f5523a795b8f7e56dfbc139ce7f64728b67726.zip |
Create: add_disk_to_super() fix resource leak
Fixes resource leak in add_disk_to_super().
Signed-off-by: Mateusz Kusiak <mateusz.kusiak@intel.com>
Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Diffstat (limited to 'Create.c')
-rw-r--r-- | Create.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -279,8 +279,10 @@ static int add_disk_to_super(int mdfd, struct shape *s, struct context *c, dv->devname); return 1; } - if (!fstat_is_blkdev(fd, dv->devname, &rdev)) + if (!fstat_is_blkdev(fd, dv->devname, &rdev)) { + close(fd); return 1; + } info->disk.major = major(rdev); info->disk.minor = minor(rdev); } @@ -289,6 +291,7 @@ static int add_disk_to_super(int mdfd, struct shape *s, struct context *c, if (st->ss->add_to_super(st, &info->disk, fd, dv->devname, dv->data_offset)) { ioctl(mdfd, STOP_ARRAY, NULL); + close(fd); return 1; } st->ss->getinfo_super(st, info, NULL); @@ -297,6 +300,7 @@ static int add_disk_to_super(int mdfd, struct shape *s, struct context *c, *zero_pid = write_zeroes_fork(fd, s, st, dv); if (*zero_pid <= 0) { ioctl(mdfd, STOP_ARRAY, NULL); + close(fd); return 1; } } |