From 5087825f3fd0ad59ce7afedaaaaa17d16196e1f6 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 5 Sep 2014 19:04:31 +0000 Subject: queue_epoll: disable buggy epoll workaround for 2.6.34.15+ commit 356ad39592cfcb537a512b2f88ed44380ae5cd78 ("epoll: prevent missed events on EPOLL_CTL_MOD") in the 2.6.34 stable tree --- queue_epoll.c | 15 ++++++++++++--- 1 file 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) -- cgit v1.2.3-24-ge0c7