]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Add some missing closes of mdfd
authorNeil Brown <neilb@suse.de>
Mon, 4 Apr 2005 05:16:18 +0000 (05:16 +0000)
committerNeil Brown <neilb@suse.de>
Mon, 4 Apr 2005 05:16:18 +0000 (05:16 +0000)
Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au>
ChangeLog
mdadm.c

index aede7dad7177d378c9b3b16a89151b9fe6be30f0..fb391d3856a323985654eb72ee16e8a516837d32 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -10,6 +10,7 @@ Changes Prior to 1.9.0 release
     -   Use "major", "minor", "makedev" macros instead of 
        "MAJOR", "MINOR", "MKDEV" so that large device numbers work
        on 2.6 (providing you have glibc 2.3.3 or later).
+    -   Add some missing closes of open file descriptors.
 
 Changes Prior to 1.8.0 release
     -   Makefile cleanup from  Luca Berra <bluca@comedia.it>
diff --git a/mdadm.c b/mdadm.c
index a6f116f78f599c2963497728eed9c8cb12c22e2d..79f28860d2b636a60e5d21360527013a1e9eefb6 100644 (file)
--- a/mdadm.c
+++ b/mdadm.c
@@ -755,11 +755,13 @@ int main(int argc, char *argv[])
                                        }
                                        if (ioctl(mdfd, GET_ARRAY_INFO, &array)>=0)
                                                /* already assembled, skip */
-                                               continue;
-                                       rv |= Assemble(array_list->devname, mdfd,
-                                                      array_list, configfile,
-                                                      NULL,
-                                                      readonly, runstop, NULL, verbose, force);
+                                               ;
+                                       else
+                                               rv |= Assemble(array_list->devname, mdfd,
+                                                              array_list, configfile,
+                                                              NULL,
+                                                              readonly, runstop, NULL, verbose, force);
+                                       close(mdfd);
                                }
                }
                break;
@@ -803,8 +805,10 @@ int main(int argc, char *argv[])
                                                        rv |= Detail(name, !verbose, test);
                                                else if (devmode=='S') {
                                                        mdfd = open_mddev(name, 0);
-                                                       if (mdfd >= 0)
+                                                       if (mdfd >= 0) {
                                                                rv |= Manage_runstop(name, mdfd, -1);
+                                                               close(mdfd);
+                                                       }
                                                }
                                                put_md_name(name);
                                        }
@@ -823,7 +827,7 @@ int main(int argc, char *argv[])
                                        rv |= Query(dv->devname); continue;
                                }
                                mdfd = open_mddev(dv->devname, 0);
-                               if (mdfd>=0)
+                               if (mdfd>=0) {
                                        switch(dv->disposition) {
                                        case 'R':
                                                rv |= Manage_runstop(dv->devname, mdfd, 1); break;
@@ -834,6 +838,8 @@ int main(int argc, char *argv[])
                                        case 'w':
                                                rv |= Manage_ro(dv->devname, mdfd, -1); break;
                                        }
+                                       close(mdfd);
+                               }
                        }
                }
                break;