From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Google-Smtp-Source: AH8x226/pmy4+eWyfcHsKkpCs49KXEIpEVrZnI+OjR9Rr0VI+cg5VHG6PTfIfc69Jz/jgp8gHYJB ARC-Seal: i=1; a=rsa-sha256; t=1517256266; cv=none; d=google.com; s=arc-20160816; b=znZhH0cPmciHai7Vxv3pXfUS/62pC8fu/+cYsOUMLPAle/n/yKh/hiBZcxFfntSZ3u TiAls3i9v8fnSg1AzB7lYr8Mg8Zr/UkNhdHIGoCDM6EsBrTRPKsDz6gFnUbHx6fTvRXN DWk+SIOJzSMUWBU0fv2e9s3Z+MmCz4mo0AkbGWxEb4YnoFmcWzvrmm0aQtBsuMxv+u42 dYjwBHhtJyTKd//fPqnRROpyBO0rgQc94ETQUc1yqvSiAJ8kWl9oNKnSrHEqL6c7c8Ps S63woXG/ztHg/t8INY/WzSE0quGav7m3lP7TE5IheV/owhowelTOCT1rM/GGg5qOWEJ2 j+bQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:user-agent:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=h4PLbjrhU8+ZxJE/rkqNKUDcGmcFBBuoMsaarHLf2BQ=; b=ivXblrx/6OBY1e9B5OAtM71fjTQIKkHEuNNv4xnCaNSLFBAhdme8mJVc5ePaxnPTfI 5HpP7+pMGTJ8yTqnjRpeXfFek36eZwqWmEwCHsUL9oXWez9Yy6JEfiltL6sl+MeipYi0 rK6qVw9pgOm/c/JZgIOzFRJtoSsi6G0VGOA1PaGUbWZZiY4vVYwh2cBOMbCh3skzNozN 8HiS6CU41g7upqHDv101o8jLwxUQPH6Uhnr9O8nXwvaUt8mAGmCrj6SRIP/byw1uLPkc fnsXBAnT2bZOD82Lx0o0SA+OuPRv+5B6UlbtAFEaB++Mhqe9asIWKIRwOJwzla4tOZoG Es7w== ARC-Authentication-Results: i=1; mx.google.com; spf=softfail (google.com: domain of transitioning gregkh@linuxfoundation.org does not designate 90.92.71.90 as permitted sender) smtp.mailfrom=gregkh@linuxfoundation.org Authentication-Results: mx.google.com; spf=softfail (google.com: domain of transitioning gregkh@linuxfoundation.org does not designate 90.92.71.90 as permitted sender) smtp.mailfrom=gregkh@linuxfoundation.org From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Robert Hering , "David S. Miller" Subject: [PATCH 4.14 33/71] net/tls: Fix inverted error codes to avoid endless loop Date: Mon, 29 Jan 2018 13:57:01 +0100 Message-Id: <20180129123829.425091510@linuxfoundation.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180129123827.271171825@linuxfoundation.org> References: <20180129123827.271171825@linuxfoundation.org> User-Agent: quilt/0.65 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-LABELS: =?utf-8?b?IlxcU2VudCI=?= X-GMAIL-THRID: =?utf-8?q?1590958507453716966?= X-GMAIL-MSGID: =?utf-8?q?1590958507453716966?= X-Mailing-List: linux-kernel@vger.kernel.org List-ID: 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: "r.hering@avm.de" [ Upstream commit 30be8f8dba1bd2aff73e8447d59228471233a3d4 ] sendfile() calls can hang endless with using Kernel TLS if a socket error occurs. Socket error codes must be inverted by Kernel TLS before returning because they are stored with positive sign. If returned non-inverted they are interpreted as number of bytes sent, causing endless looping of the splice mechanic behind sendfile(). Signed-off-by: Robert Hering Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- include/net/tls.h | 2 +- net/tls/tls_sw.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) --- a/include/net/tls.h +++ b/include/net/tls.h @@ -168,7 +168,7 @@ static inline bool tls_is_pending_open_r static inline void tls_err_abort(struct sock *sk) { - sk->sk_err = -EBADMSG; + sk->sk_err = EBADMSG; sk->sk_error_report(sk); } --- a/net/tls/tls_sw.c +++ b/net/tls/tls_sw.c @@ -407,7 +407,7 @@ int tls_sw_sendmsg(struct sock *sk, stru while (msg_data_left(msg)) { if (sk->sk_err) { - ret = sk->sk_err; + ret = -sk->sk_err; goto send_end; } @@ -560,7 +560,7 @@ int tls_sw_sendpage(struct sock *sk, str size_t copy, required_size; if (sk->sk_err) { - ret = sk->sk_err; + ret = -sk->sk_err; goto sendpage_end; }