• Pavel Shilovsky's avatar
    CIFS: Fix async reading on reconnects · 09f07a14
    Pavel Shilovsky authored
    commit 038bc961 upstream.
    
    If we get into read_into_pages() from cifs_readv_receive() and then
    loose a network, we issue cifs_reconnect that moves all mids to
    a private list and issue their callbacks. The callback of the async
    read request sets a mid to retry, frees it and wakes up a process
    that waits on the rdata completion.
    
    After the connection is established we return from read_into_pages()
    with a short read, use the mid that was freed before and try to read
    the remaining data from the a newly created socket. Both actions are
    not what we want to do. In reconnect cases (-EAGAIN) we should not
    mask off the error with a short read but should return the error
    code instead.
    Acked-by: default avatarJeff Layton <jlayton@samba.org>
    Signed-off-by: default avatarPavel Shilovsky <pshilovsky@samba.org>
    Signed-off-by: default avatarSteve French <smfrench@gmail.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    09f07a14
file.c 95.9 KB