• Nicholas Bellinger's avatar
    iscsi-target: Fail connection on short sendmsg writes · f7e7d869
    Nicholas Bellinger authored
    commit 6bf6ca75 upstream.
    
    This patch changes iscsit_do_tx_data() to fail on short writes
    when kernel_sendmsg() returns a value different than requested
    transfer length, returning -EPIPE and thus causing a connection
    reset to occur.
    
    This avoids a potential bug in the original code where a short
    write would result in kernel_sendmsg() being called again with
    the original iovec base + length.
    
    In practice this has not been an issue because iscsit_do_tx_data()
    is only used for transferring 48 byte headers + 4 byte digests,
    along with seldom used control payloads from NOPIN + TEXT_RSP +
    REJECT with less than 32k of data.
    
    So following Al's audit of iovec consumers, go ahead and fail
    the connection on short writes for now, and remove the bogus
    logic ahead of his proper upstream fix.
    Reported-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    Cc: David S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
    f7e7d869
iscsi_target_util.c 40.8 KB