lkml.org 
[lkml]   [2012]   [Apr]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] epoll: clear the tfile_check_list on -ELOOP
    An epoll_ctl(,EPOLL_CTL_ADD,,) operation can return '-ELOOP' to prevent
    circular epoll dependencies from being created. However, in that case
    we do not properly clear the 'tfile_check_list'. Thus, add a call to
    clear_tfile_check_list() for the -ELOOP case.

    Reported-by: Yurij M. Plotnikov <Yurij.Plotnikov@oktetlabs.ru>
    Tested-by: Alexandra N. Kossovsky <Alexandra.Kossovsky@oktetlabs.ru>
    Signed-off-by: Jason Baron <jbaron@redhat.com>
    ---
    fs/eventpoll.c | 4 +++-
    1 files changed, 3 insertions(+), 1 deletions(-)

    diff --git a/fs/eventpoll.c b/fs/eventpoll.c
    index 739b098..c0b3c70 100644
    --- a/fs/eventpoll.c
    +++ b/fs/eventpoll.c
    @@ -1663,8 +1663,10 @@ SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
    if (op == EPOLL_CTL_ADD) {
    if (is_file_epoll(tfile)) {
    error = -ELOOP;
    - if (ep_loop_check(ep, tfile) != 0)
    + if (ep_loop_check(ep, tfile) != 0) {
    + clear_tfile_check_list();
    goto error_tgt_fput;
    + }
    } else
    list_add(&tfile->f_tfile_llink, &tfile_check_list);
    }
    --
    1.7.7.6


    \
     
     \ /
      Last update: 2012-04-17 16:37    [W:0.017 / U:62.272 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site