lkml.org 
[lkml]   [2009]   [Jan]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 77/94] Fix timeouts in sys_pselect7
    2.6.28-stable review patch.  If anyone has any objections, please let us know.

    ------------------

    From: Bernd Schmidt <bernds_cb1@t-online.de>

    commit 62568510b8e2679cbc331d7de10ea9ba81ae8b3d upstream.

    Since we (Analog Devices) updated our Blackfin kernel to 2.6.28, we've
    seen occasional 5-second hangs from telnet. telnetd calls select with a
    NULL timeout, but with the new kernel, the system call occasionally
    returns 0, which causes telnet to call sleep (5). This did not happen
    with earlier kernels.

    The code in sys_pselect7 looks a bit strange, in particular the variable
    "to" is initialized to NULL, then changed if a non-null timeout was
    passed in, but not used further. It needs to be passed to
    core_sys_select instead of &end_time.

    This bug was introduced by 8ff3e8e85fa6c312051134b3953e397feb639f51
    ("select: switch select() and poll() over to hrtimers").

    Signed-off-by: Bernd Schmidt <bernd.schmidt@analog.com>
    Reviewed-by: Ulrich Drepper <drepper@redhat.com>
    Tested-by: Robin Getz <rgetz@blackfin.uclinux.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    fs/select.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/fs/select.c
    +++ b/fs/select.c
    @@ -560,7 +560,7 @@ static long do_pselect(int n, fd_set __u
    sigprocmask(SIG_SETMASK, &ksigmask, &sigsaved);
    }

    - ret = core_sys_select(n, inp, outp, exp, &end_time);
    + ret = core_sys_select(n, inp, outp, exp, to);
    ret = poll_select_copy_remaining(&end_time, tsp, 0, ret);

    if (ret == -ERESTARTNOHAND) {


    \
     
     \ /
      Last update: 2009-01-15 21:51    [W:4.196 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site