summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Baron <jbaron@redhat.com>2012-03-16 16:34:03 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-03-18 12:25:04 -0700
commit93dc6107a76daed81c07f50215fa6ae77691634f (patch)
treeb104aeb2798f60f06fd9f7abda5ae9ef5219e0bb
parentc579bc7e316e7e3f3b56df5e17f623325caa9783 (diff)
downloadlinux-stable-93dc6107a76daed81c07f50215fa6ae77691634f.tar.gz
linux-stable-93dc6107a76daed81c07f50215fa6ae77691634f.tar.bz2
linux-stable-93dc6107a76daed81c07f50215fa6ae77691634f.zip
Don't limit non-nested epoll paths
Commit 28d82dc1c4ed ("epoll: limit paths") that I did to limit the number of possible wakeup paths in epoll is causing a few applications to longer work (dovecot for one). The original patch is really about limiting the amount of epoll nesting (since epoll fds can be attached to other fds). Thus, we probably can allow an unlimited number of paths of depth 1. My current patch limits it at 1000. And enforce the limits on paths that have a greater depth. This is captured in: https://bugzilla.redhat.com/show_bug.cgi?id=681578 Signed-off-by: Jason Baron <jbaron@redhat.com> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--fs/eventpoll.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/eventpoll.c b/fs/eventpoll.c
index ea54cdef04dd..4d9d3a45e356 100644
--- a/fs/eventpoll.c
+++ b/fs/eventpoll.c
@@ -988,6 +988,10 @@ static int path_count[PATH_ARR_SIZE];
static int path_count_inc(int nests)
{
+ /* Allow an arbitrary number of depth 1 paths */
+ if (nests == 0)
+ return 0;
+
if (++path_count[nests] > path_limits[nests])
return -1;
return 0;