about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--queue_epoll.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/queue_epoll.c b/queue_epoll.c
index 4112377..90d0d89 100644
--- a/queue_epoll.c
+++ b/queue_epoll.c
@@ -55,11 +55,20 @@ __attribute__((constructor)) static void epoll_ctl_mod_buggy_detect(void)
         if (version <= 2)
                 epoll_ctl_mod_buggy = true;
 
-        /* 2.6.32.61 is OK */
-        if (version == 2 && patchlevel == 6 && sublevel == 32) {
+        /* 2.6.32.61+ and 2.6.34.15+ are OK */
+        if (version == 2 && patchlevel == 6 &&
+            (sublevel == 32 || sublevel == 34)) {
                 rc = sscanf(buf.release, "%u.%u.%u.%u",
                             &version, &patchlevel, &sublevel, &extra);
-                epoll_ctl_mod_buggy = (rc == 4) && (extra < 61);
+                if (rc != 4)
+                        return;
+
+                if (sublevel == 32)
+                        epoll_ctl_mod_buggy = extra < 61; /* 2.6.32.61+ */
+                else if (sublevel == 34)
+                        epoll_ctl_mod_buggy = extra < 15; /* 2.6.34.15+ */
+                else
+                        assert("buggy version check for 2.6.32.61/2.6.34.15");
         }
 
         if (version != 3)