]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - monitor.c
monitor: don't call pselect() on deleted sysfs files
[thirdparty/mdadm.git] / monitor.c
index e034a6a069923d498184edafceaf084814e4b3c5..3cb421409ffd0105e550865f2287941c9577a797 100644 (file)
--- a/monitor.c
+++ b/monitor.c
@@ -38,8 +38,17 @@ static int write_attr(char *attr, int fd)
 
 static void add_fd(fd_set *fds, int *maxfd, int fd)
 {
+       struct stat st;
        if (fd < 0)
                return;
+       if (fstat(fd, &st) == -1) {
+               dprintf("%s: Invalid fd %d\n", __func__, fd);
+               return;
+       }
+       if (st.st_nlink == 0) {
+               dprintf("%s: fd %d was deleted\n", __func__, fd);
+               return;
+       }
        if (fd > *maxfd)
                *maxfd = fd;
        FD_SET(fd, fds);