]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - sysfs.c
Change mark_clean to set_array_state.
[thirdparty/mdadm.git] / sysfs.c
diff --git a/sysfs.c b/sysfs.c
index 34840f7698c7d4c0998d7f705b24c28d03b3ffc6..dbfb55a85aee3d1e5846b4391405f4f473f90419 100644 (file)
--- a/sysfs.c
+++ b/sysfs.c
@@ -74,7 +74,7 @@ int sysfs_open(int devnum, char *devname, char *attr)
        }
        strcat(fname, attr);
        fd = open(fname, O_RDWR);
-       if (fd < 0 && errno == -EACCES)
+       if (fd < 0 && errno == EACCES)
                fd = open(fname, O_RDONLY);
        return fd;
 }
@@ -92,7 +92,7 @@ struct mdinfo *sysfs_read(int fd, int devnum, unsigned long options)
        char *dbase;
        struct mdinfo *sra;
        struct mdinfo *dev;
-       DIR *dir;
+       DIR *dir = NULL;
        struct dirent *de;
 
        sra = malloc(sizeof(*sra));
@@ -253,9 +253,12 @@ struct mdinfo *sysfs_read(int fd, int devnum, unsigned long options)
                        dev->errors = strtoul(buf, NULL, 0);
                }
        }
+       closedir(dir);
        return sra;
 
  abort:
+       if (dir)
+               closedir(dir);
        sysfs_free(sra);
        return NULL;
 }
@@ -359,7 +362,7 @@ int sysfs_set_array(struct mdinfo *sra,
        return rv;
 }
 
-int sysfs_add_disk(struct mdinfo *sra, int fd, struct mdinfo *sd)
+int sysfs_add_disk(struct mdinfo *sra, struct mdinfo *sd)
 {
        char dv[100];
        char nm[100];