• R
    cifs: do not fail __smb_send_rqst if non-fatal signals are pending · 214a5ea0
    Ronnie Sahlberg 提交于
    RHBZ 1848178
    
    The original intent of returning an error in this function
    in the patch:
      "CIFS: Mask off signals when sending SMB packets"
    was to avoid interrupting packet send in the middle of
    sending the data (and thus breaking an SMB connection),
    but we also don't want to fail the request for non-fatal
    signals even before we have had a chance to try to
    send it (the reported problem could be reproduced e.g.
    by exiting a child process when the parent process was in
    the midst of calling futimens to update a file's timestamps).
    
    In addition, since the signal may remain pending when we enter the
    sending loop, we may end up not sending the whole packet before
    TCP buffers become full. In this case the code returns -EINTR
    but what we need here is to return -ERESTARTSYS instead to
    allow system calls to be restarted.
    
    Fixes: b30c74c7 ("CIFS: Mask off signals when sending SMB packets")
    Cc: stable@vger.kernel.org # v5.1+
    Signed-off-by: NRonnie Sahlberg <lsahlber@redhat.com>
    Reviewed-by: NPavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: NSteve French <stfrench@microsoft.com>
    214a5ea0
transport.c 41.4 KB