You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
fs,eventpoll: don't test for bitfield with stack value
In case if epoll_ctl is called with operation EPOLL_CTL_DEL then
@epds.events variable allocated on stack may contain random bits which
we test then for EPOLLEXCLUSIVE. Since currently the test look like
if (epds.events & EPOLLEXCLUSIVE) {
if (op == EPOLL_CTL_MOD)
goto error_tgt_fput;
if (op == EPOLL_CTL_ADD && (is_file_epoll(tf.file) ||
(epds.events & ~EPOLLEXCLUSIVE_OK_BITS)))
goto error_tgt_fput;
}
Nothing serious will happen even if epds.events has this bit set, still
better to be on safe side and make sure that we're to test this bit at
all.
Link: http://lkml.kernel.org/r/20170214154935.GG1850@uranus.lan
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Andrey Vagin <avagin@virtuozzo.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
e3b5a342ab
commit
c857ab640c
+1
-1
@@ -1895,7 +1895,7 @@ SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
|
|||||||
* so EPOLLEXCLUSIVE is not allowed for a EPOLL_CTL_MOD operation.
|
* so EPOLLEXCLUSIVE is not allowed for a EPOLL_CTL_MOD operation.
|
||||||
* Also, we do not currently supported nested exclusive wakeups.
|
* Also, we do not currently supported nested exclusive wakeups.
|
||||||
*/
|
*/
|
||||||
if (epds.events & EPOLLEXCLUSIVE) {
|
if (ep_op_has_event(op) && (epds.events & EPOLLEXCLUSIVE)) {
|
||||||
if (op == EPOLL_CTL_MOD)
|
if (op == EPOLL_CTL_MOD)
|
||||||
goto error_tgt_fput;
|
goto error_tgt_fput;
|
||||||
if (op == EPOLL_CTL_ADD && (is_file_epoll(tf.file) ||
|
if (op == EPOLL_CTL_ADD && (is_file_epoll(tf.file) ||
|
||||||
|
|||||||
Reference in New Issue
Block a user