In some cases file descriptors equal to 0 are treated as invalid. Fix it. Signed-off-by: Mateusz Grzonka <mateusz.grzonka@xxxxxxxxx> --- Assemble.c | 3 +-- Grow.c | 5 +---- Incremental.c | 4 ++-- mdadm.c | 3 +-- super-ddf.c | 2 +- 5 files changed, 6 insertions(+), 11 deletions(-) diff --git a/Assemble.c b/Assemble.c index 20fd97b5..704b8293 100644 --- a/Assemble.c +++ b/Assemble.c @@ -569,8 +569,7 @@ static int select_devices(struct mddev_dev *devlist, if (dfd < 0 || st->ss->load_super(st, dfd, NULL)) tmpdev->used = 2; - if (dfd > 0) - close(dfd); + close_fd(&dfd); } } diff --git a/Grow.c b/Grow.c index 70f26c7e..9c6fc95e 100644 --- a/Grow.c +++ b/Grow.c @@ -2334,10 +2334,7 @@ size_change_error: * number of devices (On-Line Capacity Expansion) must be * performed at the level of the container */ - if (fd > 0) { - close(fd); - fd = -1; - } + close_fd(&fd); rv = reshape_container(container, devname, -1, st, &info, c->force, c->backup_file, c->verbose, 0, 0, 0); diff --git a/Incremental.c b/Incremental.c index cd9cc0fc..d28925d6 100644 --- a/Incremental.c +++ b/Incremental.c @@ -1701,8 +1701,8 @@ int IncrementalRemove(char *devname, char *id_path, int verbose) return 1; } mdfd = open_dev_excl(ent->devnm); - if (mdfd > 0) { - close(mdfd); + if (is_fd_valid(mdfd)) { + close_fd(&mdfd); if (sysfs_get_str(&mdi, NULL, "array_state", buf, sizeof(buf)) > 0) { if (strncmp(buf, "active", 6) == 0 || diff --git a/mdadm.c b/mdadm.c index a31ab99c..91e67467 100644 --- a/mdadm.c +++ b/mdadm.c @@ -1770,8 +1770,7 @@ int main(int argc, char *argv[]) } if (locked) cluster_release_dlmlock(); - if (mdfd > 0) - close(mdfd); + close_fd(&mdfd); exit(rv); } diff --git a/super-ddf.c b/super-ddf.c index d334a79d..3f304cdc 100644 --- a/super-ddf.c +++ b/super-ddf.c @@ -4914,7 +4914,7 @@ static int raid10_degraded(struct mdinfo *info) pr_err("BUG: invalid raid disk\n"); goto out; } - if (d->state_fd > 0) + if (is_fd_valid(d->state_fd)) found[i]++; } ret = 2; -- 2.26.2