X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Feventpoll.c;h=28ecd4ddf522c4a1a50ba4f9a90372315596cf02;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=7d6a12f66a6fc06dcc57961d165ff5869dd04154;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/fs/eventpoll.c b/fs/eventpoll.c index 7d6a12f66..28ecd4ddf 100644 --- a/fs/eventpoll.c +++ b/fs/eventpoll.c @@ -33,7 +33,7 @@ #include #include #include -#include +#include #include #include #include @@ -619,6 +619,7 @@ eexit_1: return error; } +#define MAX_EVENTS (INT_MAX / sizeof(struct epoll_event)) /* * Implement the event wait interface for the eventpoll file. It is the kernel @@ -635,7 +636,7 @@ asmlinkage long sys_epoll_wait(int epfd, struct epoll_event __user *events, current, epfd, events, maxevents, timeout)); /* The maximum number of event must be greater than zero */ - if (maxevents <= 0) + if (maxevents <= 0 || maxevents > MAX_EVENTS) return -EINVAL; /* Verify that the area passed by the user is writeable */