From patchwork Wed Nov 27 20:16:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 1201777 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=netronome.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="UnA0gXVf"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 47NXBx2G1Xz9sR4 for ; Thu, 28 Nov 2019 07:18:01 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727139AbfK0UR7 (ORCPT ); Wed, 27 Nov 2019 15:17:59 -0500 Received: from mail-lj1-f193.google.com ([209.85.208.193]:39901 "EHLO mail-lj1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726703AbfK0UR7 (ORCPT ); Wed, 27 Nov 2019 15:17:59 -0500 Received: by mail-lj1-f193.google.com with SMTP id e10so16708648ljj.6 for ; Wed, 27 Nov 2019 12:17:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ZbWpNKA4JOWw6FrvYdqB6BZTvtmb1o6ort0yRv/Qq4Q=; b=UnA0gXVfyTcKYFwxJwqKsTV3qScX0ucvkMHrjK3D+EL7GjuWy81nhihnVn4SZ1L1f/ FDtIsCTrsZPm+WcflGRNPc+55zsB3pFQuvfLlC6Ct3rSGOPGlz1gbw5+MMql30r7liXg xZIL4HLrNpa8JYTKpoZEv5JwBXs/yB9B8BTUx0MJYGqToHT3xwz5xMTaknR04nXpA9kK 28mVOgnuj+XpZ7Mpv3cjA8oX/1845wgtcqQMRlIe3pBD0LdA7hIGDLq18ZA97BO8wnPV DBSFpR0N6S+QQ5vpvjDAP4cRn+4PhMXTfDNt9F8WqQy0Z5q1/e6tk6v/WvgDQ/+v2WRJ 9NMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ZbWpNKA4JOWw6FrvYdqB6BZTvtmb1o6ort0yRv/Qq4Q=; b=A+Ji5HNG8CPXIjWDB5twkV7Z/xxgb2JatX3HhDEP6sfNp5N4RqRiStmlU2V/qaiauE nCNUJYN0EGyYt35KLPEeQ1v5mlrFGWZhWQTGwduT9ySoJ0ITmqeiwSMXq+UFVK7JpHRI 7Ty2AB6RCB8Fh5OIc5ux3SLt/qrnBA5/ysA0JZ1b/zUx9iaVsGPjrzznu8ue7QSfAEW5 Ibs8EVD9j5uIKtd86yTw9yc+AAX/CS1qXOBDPcYiUyzcR+aTwaR+IHW+4POBkfDkzNii GB+Ckk9Mf0vGWXhWTXrz0wL/3ArVOxWd1qkYbPi9capvHGqYFqRNp26hqTQGVbJ2b3nO zaDA== X-Gm-Message-State: APjAAAVmY5/th8m/FJQ5vNolAN2t5NhPi9nAHPTPsUw1FIkuiFSIuVzi ZpoA2kPwLteGem3ba7voSUtjQQ== X-Google-Smtp-Source: APXvYqz78/35Mrl0a888RrdK4S97M2/D9O9RwIXYz4ZLMfeimur3GqkKO9UZP855FGvy0sOh1f4QsA== X-Received: by 2002:a2e:9886:: with SMTP id b6mr18930607ljj.47.1574885876760; Wed, 27 Nov 2019 12:17:56 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([66.60.152.14]) by smtp.gmail.com with ESMTPSA id r22sm7759739lji.71.2019.11.27.12.17.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Nov 2019 12:17:56 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, john.fastabend@gmail.com Cc: netdev@vger.kernel.org, oss-drivers@netronome.com, borisp@mellanox.com, aviadye@mellanox.com, daniel@iogearbox.net, Jakub Kicinski , Simon Horman Subject: [PATCH net 1/8] net/tls: take into account that bpf_exec_tx_verdict() may free the record Date: Wed, 27 Nov 2019 12:16:39 -0800 Message-Id: <20191127201646.25455-2-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191127201646.25455-1-jakub.kicinski@netronome.com> References: <20191127201646.25455-1-jakub.kicinski@netronome.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org bpf_exec_tx_verdict() may free the record if tls_push_record() fails, or if the entire record got consumed by BPF. Re-check ctx->open_rec before touching the data. Fixes: d3b18ad31f93 ("tls: add bpf support to sk_msg handling") Signed-off-by: Jakub Kicinski Reviewed-by: Simon Horman Acked-by: John Fastabend --- net/tls/tls_sw.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c index da9f9ce51e7b..70e3c0c1af50 100644 --- a/net/tls/tls_sw.c +++ b/net/tls/tls_sw.c @@ -984,7 +984,7 @@ int tls_sw_sendmsg(struct sock *sk, struct msghdr *msg, size_t size) num_async++; else if (ret == -ENOMEM) goto wait_for_memory; - else if (ret == -ENOSPC) + else if (ctx->open_rec && ret == -ENOSPC) goto rollback_iter; else if (ret != -EAGAIN) goto send_end; @@ -1053,11 +1053,12 @@ int tls_sw_sendmsg(struct sock *sk, struct msghdr *msg, size_t size) ret = sk_stream_wait_memory(sk, &timeo); if (ret) { trim_sgl: - tls_trim_both_msgs(sk, orig_size); + if (ctx->open_rec) + tls_trim_both_msgs(sk, orig_size); goto send_end; } - if (msg_en->sg.size < required_size) + if (ctx->open_rec && msg_en->sg.size < required_size) goto alloc_encrypted; } @@ -1190,11 +1191,13 @@ static int tls_sw_do_sendpage(struct sock *sk, struct page *page, wait_for_memory: ret = sk_stream_wait_memory(sk, &timeo); if (ret) { - tls_trim_both_msgs(sk, msg_pl->sg.size); + if (ctx->open_rec) + tls_trim_both_msgs(sk, msg_pl->sg.size); goto sendpage_end; } - goto alloc_payload; + if (ctx->open_rec) + goto alloc_payload; } if (num_async) { From patchwork Wed Nov 27 20:16:40 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 1201778 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=netronome.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="wnCh/D/5"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 47NXC03VSMz9sR4 for ; Thu, 28 Nov 2019 07:18:04 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727158AbfK0USC (ORCPT ); Wed, 27 Nov 2019 15:18:02 -0500 Received: from mail-lj1-f193.google.com ([209.85.208.193]:45784 "EHLO mail-lj1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726703AbfK0USC (ORCPT ); Wed, 27 Nov 2019 15:18:02 -0500 Received: by mail-lj1-f193.google.com with SMTP id n21so25849794ljg.12 for ; Wed, 27 Nov 2019 12:18:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=w5gQgA8v/HX14VDHHSlOUpz5qEAJHrEInj+L4mAu6kU=; b=wnCh/D/5s2kkqDt+MzgOvBzXGLGLQ7bC0JEEhb8xL23azT+TyPRHxvUhjImrVjeCv3 Snbv3eVRVgg5C5upmplDCVRjpB5/ds3Yd5MxU0i3bOHdfdUCtKWdGU7c7CO3k8z3pzlt 7shyoomJh2s+VYbgJSGXn0Dp6KQfdzg54bvHx7P5RFJL+J4+JAPif5CSUmfyS7y0XtO7 SFtwxjip2vroqROBnnoQj1AxKf76g5EUDsf2l1ZQAh8yxFLPX1DF7sivruScqrbaz+ut B7tRM5YkY2KhKHScbwLgTnRLb0ALqeWYXnBoA+SZmP1/0tNSKvLKkDu3D/HDYkhAF9rG cUNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=w5gQgA8v/HX14VDHHSlOUpz5qEAJHrEInj+L4mAu6kU=; b=YTUkjHeFGs5iv+Q2cwo2HdGDwWFdDs3pmwHCjXsMjCwV1bGOfaLfG8+2cY9rLTJBTl VoqHKiAegO1CzONRD0RBRvXG4tcdVnzrd8+domafKvQhSURikc3PSucESFWe8Xnn/XU7 O7RdymnpnvMoCmN1fT/jW06jI9Ru9+PUYwsJZvA9uziezDqZrMXh7eCL8ZzZxTwjTqph HzW76Di6b8YPj3Qpzy0u5r44Ugdftz4DbZdDFGXD9kHS0bZEJKwmL8hfttNKeTj9zH/N L3OPHt328AQIyz51F0m/LFPVQgVea/FvoGaMIDwPAbAQwiukoKZwSObhi8bmBUqmsktE SUyQ== X-Gm-Message-State: APjAAAXIKUeQ2yUSKp3irkGvSooYY26gh3E8pviXxZeR1bWIwUgXL4zm sda3LZzGOnODsgGuKMxQa3ZasA== X-Google-Smtp-Source: APXvYqxkS1ZKTxIiO68eMriRpO65+39Nfwzvzt+U2AIcDTJlA532080E2PQZpfg42HhltaQKBRoq9g== X-Received: by 2002:a2e:3009:: with SMTP id w9mr33242841ljw.74.1574885880044; Wed, 27 Nov 2019 12:18:00 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([66.60.152.14]) by smtp.gmail.com with ESMTPSA id r22sm7759739lji.71.2019.11.27.12.17.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Nov 2019 12:17:59 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, john.fastabend@gmail.com Cc: netdev@vger.kernel.org, oss-drivers@netronome.com, borisp@mellanox.com, aviadye@mellanox.com, daniel@iogearbox.net, Jakub Kicinski , syzbot+df0d4ec12332661dd1f9@syzkaller.appspotmail.com, Simon Horman Subject: [PATCH net 2/8] net/tls: free the record on encryption error Date: Wed, 27 Nov 2019 12:16:40 -0800 Message-Id: <20191127201646.25455-3-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191127201646.25455-1-jakub.kicinski@netronome.com> References: <20191127201646.25455-1-jakub.kicinski@netronome.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When tls_do_encryption() fails the SG lists are left with the SG_END and SG_CHAIN marks in place. One could hope that once encryption fails we will never see the record again, but that is in fact not true. Commit d3b18ad31f93 ("tls: add bpf support to sk_msg handling") added special handling to ENOMEM and ENOSPC errors which mean we may see the same record re-submitted. As suggested by John free the record, the BPF code is already doing just that. Reported-by: syzbot+df0d4ec12332661dd1f9@syzkaller.appspotmail.com Fixes: d3b18ad31f93 ("tls: add bpf support to sk_msg handling") Signed-off-by: Jakub Kicinski Reviewed-by: Simon Horman Acked-by: John Fastabend --- net/tls/tls_sw.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c index 70e3c0c1af50..dbba51b69d21 100644 --- a/net/tls/tls_sw.c +++ b/net/tls/tls_sw.c @@ -771,8 +771,14 @@ static int bpf_exec_tx_verdict(struct sk_msg *msg, struct sock *sk, policy = !(flags & MSG_SENDPAGE_NOPOLICY); psock = sk_psock_get(sk); - if (!psock || !policy) - return tls_push_record(sk, flags, record_type); + if (!psock || !policy) { + err = tls_push_record(sk, flags, record_type); + if (err) { + *copied -= sk_msg_free(sk, msg); + tls_free_open_rec(sk); + } + return err; + } more_data: enospc = sk_msg_full(msg); if (psock->eval == __SK_NONE) { From patchwork Wed Nov 27 20:16:41 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 1201779 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=netronome.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="t41J2DQt"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 47NXC52KFMz9sR4 for ; Thu, 28 Nov 2019 07:18:09 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727205AbfK0USH (ORCPT ); Wed, 27 Nov 2019 15:18:07 -0500 Received: from mail-lf1-f65.google.com ([209.85.167.65]:37394 "EHLO mail-lf1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726703AbfK0USH (ORCPT ); Wed, 27 Nov 2019 15:18:07 -0500 Received: by mail-lf1-f65.google.com with SMTP id b20so18205311lfp.4 for ; Wed, 27 Nov 2019 12:18:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=YsujNiLxYXhT3OLvxgeSK2S/UhWyyf7fGTm6bLUA6qg=; b=t41J2DQt6c7/x1U0pRNFiv2oR7s1muVDfnwHMqHTu895YZy0puIzVz4j4EQ5tZcaFv jbBLQxfji7a1/Pg0sKq9D3XUBVdJEtlRENmekMOrN/LCqHrTMFaaDpI6cRaXbCDNhhs9 GEjiu+vGngVPogoLCzf/bVclLMfiM2o3p2E96/hD/BXLS0G8mXVEXgx2hHxB2Bjqs++8 Kg0HI/ga7MjdYYcZormC+gY4jnUhYQhxywCwT9H9i/0B3DCdScgdl/uVt5tBiDM9JCrk DJlrnEbdFt3z8o0hBwtYm7Pf7JCwkmPhxS6HtioM785wgcos/Q+/1tQImQT01SBLAI/c ibGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=YsujNiLxYXhT3OLvxgeSK2S/UhWyyf7fGTm6bLUA6qg=; b=lIuxG+4QBK9tE3dEzw6umSiaPoZ7OY+IpU9LDkezi3Mp3ir+ENPHj2c+x6Cd16VPPQ v8Qf5jEjVqG0JqEGwtxJFR7ZshxiVZH2MLGZyGvGaOPXbQaM7JZxJO0l8T7vY2Tpi+ny SI/Lh/KVpXEJOQpMJLE14ESw3+8cPOpTOHxzSBTkWr0IxRaL4XMXdFSqUXewmNhWFvb1 HqQx8pLNFDjLpiS1UpcHzueDlmRiTr/mA58b+YJGCLkO7xVYIFAlLlVVd8Eau6EsAXz9 aDF97Xiyd2GM9fJpuj6xEJYFNW7XDrljIRlZjvCkXXMMG3iGiLfnDQKOKEuO/pTFt0ly 2gQA== X-Gm-Message-State: APjAAAUOLmamxVhKig3S1+dGf8EmpXnc9i8zupYNHISQ9mvf/s4MLfpn MtPTW6y+SpZq5xr5jdcDZ+nG5Q== X-Google-Smtp-Source: APXvYqzZd7NPZn9A07KiSxHmO3sSbPXAnxlC32skjlKgXjHJs2cbQB3MfN3cOvEPEGiQHMGBpuwBBQ== X-Received: by 2002:ac2:4244:: with SMTP id m4mr863251lfl.85.1574885883246; Wed, 27 Nov 2019 12:18:03 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([66.60.152.14]) by smtp.gmail.com with ESMTPSA id r22sm7759739lji.71.2019.11.27.12.18.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Nov 2019 12:18:02 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, john.fastabend@gmail.com Cc: netdev@vger.kernel.org, oss-drivers@netronome.com, borisp@mellanox.com, aviadye@mellanox.com, daniel@iogearbox.net, Jakub Kicinski , Simon Horman Subject: [PATCH net 3/8] net: skmsg: fix TLS 1.3 crash with full sk_msg Date: Wed, 27 Nov 2019 12:16:41 -0800 Message-Id: <20191127201646.25455-4-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191127201646.25455-1-jakub.kicinski@netronome.com> References: <20191127201646.25455-1-jakub.kicinski@netronome.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org TLS 1.3 started using the entry at the end of the SG array for chaining-in the single byte content type entry. This mostly works: [ E E E E E E . . ] ^ ^ start end E < content type / [ E E E E E E C . ] ^ ^ start end (Where E denotes a populated SG entry; C denotes a chaining entry.) If the array is full, however, the end will point to the start: [ E E E E E E E E ] ^ start end And we end up overwriting the start: E < content type / [ C E E E E E E E ] ^ start end The sg array is supposed to be a circular buffer with start and end markers pointing anywhere. In case where start > end (i.e. the circular buffer has "wrapped") there is an extra entry reserved at the end to chain the two halves together. [ E E E E E E . . l ] (Where l is the reserved entry for "looping" back to front. As suggested by John, let's reserve another entry for chaining SG entries after the main circular buffer. Note that this entry has to be pointed to by the end entry so its position is not fixed. Examples of full messages: [ E E E E E E E E . l ] ^ ^ start end <---------------. [ E E . E E E E E E l ] ^ ^ end start Now the end will always point to an unused entry, so TLS 1.3 can always use it. Fixes: 130b392c6cd6 ("net: tls: Add tls 1.3 support") Signed-off-by: Jakub Kicinski Reviewed-by: Simon Horman --- include/linux/skmsg.h | 28 ++++++++++++++-------------- net/core/filter.c | 8 ++++---- net/core/skmsg.c | 2 +- net/ipv4/tcp_bpf.c | 2 +- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/include/linux/skmsg.h b/include/linux/skmsg.h index 6cb077b646a5..ef7031f8a304 100644 --- a/include/linux/skmsg.h +++ b/include/linux/skmsg.h @@ -14,6 +14,7 @@ #include #define MAX_MSG_FRAGS MAX_SKB_FRAGS +#define NR_MSG_FRAG_IDS (MAX_MSG_FRAGS + 1) enum __sk_action { __SK_DROP = 0, @@ -29,13 +30,15 @@ struct sk_msg_sg { u32 size; u32 copybreak; unsigned long copy; - /* The extra element is used for chaining the front and sections when - * the list becomes partitioned (e.g. end < start). The crypto APIs - * require the chaining. + /* The extra two elements: + * 1) used for chaining the front and sections when the list becomes + * partitioned (e.g. end < start). The crypto APIs require the + * chaining; + * 2) to chain tailer SG entries after the message. */ - struct scatterlist data[MAX_MSG_FRAGS + 1]; + struct scatterlist data[MAX_MSG_FRAGS + 2]; }; -static_assert(BITS_PER_LONG >= MAX_MSG_FRAGS); +static_assert(BITS_PER_LONG >= NR_MSG_FRAG_IDS); /* UAPI in filter.c depends on struct sk_msg_sg being first element. */ struct sk_msg { @@ -142,13 +145,13 @@ static inline void sk_msg_apply_bytes(struct sk_psock *psock, u32 bytes) static inline u32 sk_msg_iter_dist(u32 start, u32 end) { - return end >= start ? end - start : end + (MAX_MSG_FRAGS - start); + return end >= start ? end - start : end + (NR_MSG_FRAG_IDS - start); } #define sk_msg_iter_var_prev(var) \ do { \ if (var == 0) \ - var = MAX_MSG_FRAGS - 1; \ + var = NR_MSG_FRAG_IDS - 1; \ else \ var--; \ } while (0) @@ -156,7 +159,7 @@ static inline u32 sk_msg_iter_dist(u32 start, u32 end) #define sk_msg_iter_var_next(var) \ do { \ var++; \ - if (var == MAX_MSG_FRAGS) \ + if (var == NR_MSG_FRAG_IDS) \ var = 0; \ } while (0) @@ -173,9 +176,9 @@ static inline void sk_msg_clear_meta(struct sk_msg *msg) static inline void sk_msg_init(struct sk_msg *msg) { - BUILD_BUG_ON(ARRAY_SIZE(msg->sg.data) - 1 != MAX_MSG_FRAGS); + BUILD_BUG_ON(ARRAY_SIZE(msg->sg.data) - 1 != NR_MSG_FRAG_IDS); memset(msg, 0, sizeof(*msg)); - sg_init_marker(msg->sg.data, MAX_MSG_FRAGS); + sg_init_marker(msg->sg.data, NR_MSG_FRAG_IDS); } static inline void sk_msg_xfer(struct sk_msg *dst, struct sk_msg *src, @@ -196,14 +199,11 @@ static inline void sk_msg_xfer_full(struct sk_msg *dst, struct sk_msg *src) static inline bool sk_msg_full(const struct sk_msg *msg) { - return (msg->sg.end == msg->sg.start) && msg->sg.size; + return sk_msg_iter_dist(msg->sg.start, msg->sg.end) == MAX_MSG_FRAGS; } static inline u32 sk_msg_elem_used(const struct sk_msg *msg) { - if (sk_msg_full(msg)) - return MAX_MSG_FRAGS; - return sk_msg_iter_dist(msg->sg.start, msg->sg.end); } diff --git a/net/core/filter.c b/net/core/filter.c index b0ed048585ba..f1e703eed3d2 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -2299,7 +2299,7 @@ BPF_CALL_4(bpf_msg_pull_data, struct sk_msg *, msg, u32, start, WARN_ON_ONCE(last_sge == first_sge); shift = last_sge > first_sge ? last_sge - first_sge - 1 : - MAX_SKB_FRAGS - first_sge + last_sge - 1; + NR_MSG_FRAG_IDS - first_sge + last_sge - 1; if (!shift) goto out; @@ -2308,8 +2308,8 @@ BPF_CALL_4(bpf_msg_pull_data, struct sk_msg *, msg, u32, start, do { u32 move_from; - if (i + shift >= MAX_MSG_FRAGS) - move_from = i + shift - MAX_MSG_FRAGS; + if (i + shift >= NR_MSG_FRAG_IDS) + move_from = i + shift - NR_MSG_FRAG_IDS; else move_from = i + shift; if (move_from == msg->sg.end) @@ -2323,7 +2323,7 @@ BPF_CALL_4(bpf_msg_pull_data, struct sk_msg *, msg, u32, start, } while (1); msg->sg.end = msg->sg.end - shift > msg->sg.end ? - msg->sg.end - shift + MAX_MSG_FRAGS : + msg->sg.end - shift + NR_MSG_FRAG_IDS : msg->sg.end - shift; out: msg->data = sg_virt(&msg->sg.data[first_sge]) + start - offset; diff --git a/net/core/skmsg.c b/net/core/skmsg.c index a469d2124f3f..ded2d5227678 100644 --- a/net/core/skmsg.c +++ b/net/core/skmsg.c @@ -421,7 +421,7 @@ static int sk_psock_skb_ingress(struct sk_psock *psock, struct sk_buff *skb) copied = skb->len; msg->sg.start = 0; msg->sg.size = copied; - msg->sg.end = num_sge == MAX_MSG_FRAGS ? 0 : num_sge; + msg->sg.end = num_sge; msg->skb = skb; sk_psock_queue_msg(psock, msg); diff --git a/net/ipv4/tcp_bpf.c b/net/ipv4/tcp_bpf.c index 8a56e09cfb0e..e38705165ac9 100644 --- a/net/ipv4/tcp_bpf.c +++ b/net/ipv4/tcp_bpf.c @@ -301,7 +301,7 @@ EXPORT_SYMBOL_GPL(tcp_bpf_sendmsg_redir); static int tcp_bpf_send_verdict(struct sock *sk, struct sk_psock *psock, struct sk_msg *msg, int *copied, int flags) { - bool cork = false, enospc = msg->sg.start == msg->sg.end; + bool cork = false, enospc = sk_msg_full(msg); struct sock *sk_redir; u32 tosend, delta = 0; int ret; From patchwork Wed Nov 27 20:16:42 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 1201780 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=netronome.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="VpKoCPX1"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 47NXC651p2z9sR8 for ; Thu, 28 Nov 2019 07:18:10 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727230AbfK0USJ (ORCPT ); Wed, 27 Nov 2019 15:18:09 -0500 Received: from mail-lj1-f195.google.com ([209.85.208.195]:44131 "EHLO mail-lj1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727166AbfK0USI (ORCPT ); Wed, 27 Nov 2019 15:18:08 -0500 Received: by mail-lj1-f195.google.com with SMTP id g3so25845753ljl.11 for ; Wed, 27 Nov 2019 12:18:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Mr+wnQAJZuMupw7Gr/YQA5l115kxrbvQDbVlCnDPrUA=; b=VpKoCPX1r2L21paGlEGal13TRhMIrqGJvTRsqnv5Hgq+pTJxYVteUMQZjUSDcnDApg mMxz7cS6WXWph2qt7m1KiojbOA8b6qVtgSeU2BxnNQht9lPgpNwnuAyL9Y4rFAar2XZQ QFCn7FNA+82rXBktBm+DOPJ3YYW4LjlU2qHcjd7uU1vgQ1aPy3GoHCwCFr7RnW0D2qZx hTkpp1MTd0PKYqUlmikNdupOr4tlYyE/lSXqTUIChEV9PlU3ycvB24hFp92ZXv4mi39u 9ll+3Wh3vK932jtus7N1iA+ueAjR8sR0727ai137RQu7MiruiAt7Q8lH0N+qP9EmJVXJ 6C5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Mr+wnQAJZuMupw7Gr/YQA5l115kxrbvQDbVlCnDPrUA=; b=lZbbBfkvdPNoHT1vunfTkG9oabHiJCpFeOJNTeOfXfJGS+5iWSOi4nwOBL6n83Da8X 8pseKlb7v3U0XSyOwEaSYGiFhHFu0CpbTzmJsWQduYZ3RP9LVgFWBCk55H8dNibTk26g shj6kyV0xYG3czwN6PhThwIafdgzQVYCToUDTvZDn08mFTggsHhT8zjRMcgvOapy1v78 +C3t+dce4oCQLZuA9BDNuv3OioqhH9iYMDU8pIYUhKlq4A7/tXlbQxwFDy2YUTUStVgJ G+z3RN5Jm4wbU60j1AbDs2CQbV9VrD0CbG18GpwKcCJYUFTSF2TW9N5dHFGLTzbM7Hnd TptQ== X-Gm-Message-State: APjAAAV02gSEX5ZtVqPeRSTMsGm81L4SHfEUBN1MU/AAz82DXML84np9 jkRqxx2a9JSIjIYn1vSFx9PClXebVlk= X-Google-Smtp-Source: APXvYqzkDrMChSRN0wPbY+WN8pd7Z3x7ZqNWmuc3RqQkOcv/roXo6L8yz+FhHttETC0sJHIIv/pDug== X-Received: by 2002:a2e:580c:: with SMTP id m12mr15790344ljb.150.1574885886322; Wed, 27 Nov 2019 12:18:06 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([66.60.152.14]) by smtp.gmail.com with ESMTPSA id r22sm7759739lji.71.2019.11.27.12.18.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Nov 2019 12:18:05 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, john.fastabend@gmail.com Cc: netdev@vger.kernel.org, oss-drivers@netronome.com, borisp@mellanox.com, aviadye@mellanox.com, daniel@iogearbox.net, Jakub Kicinski , Simon Horman Subject: [PATCH net 4/8] selftests/tls: add a test for fragmented messages Date: Wed, 27 Nov 2019 12:16:42 -0800 Message-Id: <20191127201646.25455-5-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191127201646.25455-1-jakub.kicinski@netronome.com> References: <20191127201646.25455-1-jakub.kicinski@netronome.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add a sendmsg test with very fragmented messages. This should fill up sk_msg and test the boundary conditions. Signed-off-by: Jakub Kicinski Reviewed-by: Simon Horman --- tools/testing/selftests/net/tls.c | 60 +++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/tools/testing/selftests/net/tls.c b/tools/testing/selftests/net/tls.c index 1c8f194d6556..46abcae47dee 100644 --- a/tools/testing/selftests/net/tls.c +++ b/tools/testing/selftests/net/tls.c @@ -268,6 +268,38 @@ TEST_F(tls, sendmsg_single) EXPECT_EQ(memcmp(buf, test_str, send_len), 0); } +#define MAX_FRAGS 64 +#define SEND_LEN 13 +TEST_F(tls, sendmsg_fragmented) +{ + char const *test_str = "test_sendmsg"; + char buf[SEND_LEN * MAX_FRAGS]; + struct iovec vec[MAX_FRAGS]; + struct msghdr msg; + int i, frags; + + for (frags = 1; frags <= MAX_FRAGS; frags++) { + for (i = 0; i < frags; i++) { + vec[i].iov_base = (char *)test_str; + vec[i].iov_len = SEND_LEN; + } + + memset(&msg, 0, sizeof(struct msghdr)); + msg.msg_iov = vec; + msg.msg_iovlen = frags; + + EXPECT_EQ(sendmsg(self->fd, &msg, 0), SEND_LEN * frags); + EXPECT_EQ(recv(self->cfd, buf, SEND_LEN * frags, MSG_WAITALL), + SEND_LEN * frags); + + for (i = 0; i < frags; i++) + EXPECT_EQ(memcmp(buf + SEND_LEN * i, + test_str, SEND_LEN), 0); + } +} +#undef MAX_FRAGS +#undef SEND_LEN + TEST_F(tls, sendmsg_large) { void *mem = malloc(16384); @@ -694,6 +726,34 @@ TEST_F(tls, recv_lowat) EXPECT_EQ(memcmp(send_mem, recv_mem + 10, 5), 0); } +TEST_F(tls, recv_rcvbuf) +{ + char send_mem[4096]; + char recv_mem[4096]; + int rcv_buf = 1024; + + memset(send_mem, 0x1c, sizeof(send_mem)); + + EXPECT_EQ(setsockopt(self->cfd, SOL_SOCKET, SO_RCVBUF, + &rcv_buf, sizeof(rcv_buf)), 0); + + EXPECT_EQ(send(self->fd, send_mem, 512, 0), 512); + memset(recv_mem, 0, sizeof(recv_mem)); + EXPECT_EQ(recv(self->cfd, recv_mem, sizeof(recv_mem), 0), 512); + EXPECT_EQ(memcmp(send_mem, recv_mem, 512), 0); + + if (self->notls) + return; + + EXPECT_EQ(send(self->fd, send_mem, 4096, 0), 4096); + memset(recv_mem, 0, sizeof(recv_mem)); + EXPECT_EQ(recv(self->cfd, recv_mem, sizeof(recv_mem), 0), -1); + EXPECT_EQ(errno, EMSGSIZE); + + EXPECT_EQ(recv(self->cfd, recv_mem, sizeof(recv_mem), 0), -1); + EXPECT_EQ(errno, EMSGSIZE); +} + TEST_F(tls, bidir) { char const *test_str = "test_read"; From patchwork Wed Nov 27 20:16:43 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 1201781 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=netronome.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="DLEgrnWo"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 47NXC93Shlz9sR4 for ; Thu, 28 Nov 2019 07:18:13 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727237AbfK0USM (ORCPT ); Wed, 27 Nov 2019 15:18:12 -0500 Received: from mail-lj1-f193.google.com ([209.85.208.193]:33805 "EHLO mail-lj1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727166AbfK0USL (ORCPT ); Wed, 27 Nov 2019 15:18:11 -0500 Received: by mail-lj1-f193.google.com with SMTP id m6so18510212ljc.1 for ; Wed, 27 Nov 2019 12:18:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4lHQcXh/Zh0dZRNnXWmnAAWS+nMt4tBVG2yRW9EibR8=; b=DLEgrnWoP/ycG1C7T06EgMEJxpvgotOzvPW5SUoSl83NC7LEoxdp3ULyKMXMnp8MNJ rd1sUcjuqJ0PaxrgERHbC77jQw3Pl7qRYlH2aYBb+qU7jfkOfmydMyBv9L7MARRxcARS Xa1i/fowWFf40GD5pwR1eIohmy8bzl4EGVOW2aC4cArVwjY8QWWWcVsImgKnfTq5sWnz MGusYHcV2kJrnAqvhTUX/fWtEnq+86QMFe0UtNENrL3Yi9qdpzH3Y5rPP2qrPKscmfNK AGmRodql+VcW39JU5u7nOL/sF9RQKPQfo1+LGDq4pWHeOfOoq75n+sc8FNDSmqgwXEw0 0HOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4lHQcXh/Zh0dZRNnXWmnAAWS+nMt4tBVG2yRW9EibR8=; b=Xa7At11NROw27Cn3W6x43VGQR2zGU0ZV6GL5ntcjcf20rjHDiHBWHiwKHblQmmjIf7 31aM/uHCugqRh6DyEs9Uaz5LvG1HCoDAYog1ViJj7ZTtGVhb8F+19gmWyZHry/sjKgPc +56wgG7iaBqDAI6LHFo9LglCChjxNNQQf0otQ4xTdPmdyIKB4maCrAPkg/gI3eVYcIhD 7HyTT78J0T2OnER+hVUH2kJjcrTvjRPGSJxhoglpuDhQzxmFgNvFZht5QJg/YY+oceS5 QbB8M+AAwkiW1Nhj+ZF49kLnxXPv2zdC/TXRBcw6lxfdDxGECc17Io82Xl1OBCe4HzeZ xC0w== X-Gm-Message-State: APjAAAUwfK2xTCe/J06YmiVMKcNrqD3dfWUTclFgu0unsUkHv8mgPERA O6YAfRy0cLBfrwDVWN619JFlVA== X-Google-Smtp-Source: APXvYqweNgMIcdf2Aq1tT7a1C5dLFSXhO4OANWjFATCmS9T4v2BC+EGfwHKVBVvgoPwqWT+6usSZbQ== X-Received: by 2002:a2e:3a15:: with SMTP id h21mr32133023lja.256.1574885889520; Wed, 27 Nov 2019 12:18:09 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([66.60.152.14]) by smtp.gmail.com with ESMTPSA id r22sm7759739lji.71.2019.11.27.12.18.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Nov 2019 12:18:08 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, john.fastabend@gmail.com Cc: netdev@vger.kernel.org, oss-drivers@netronome.com, borisp@mellanox.com, aviadye@mellanox.com, daniel@iogearbox.net, Jakub Kicinski , Simon Horman Subject: [PATCH net 5/8] net/tls: remove the dead inplace_crypto code Date: Wed, 27 Nov 2019 12:16:43 -0800 Message-Id: <20191127201646.25455-6-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191127201646.25455-1-jakub.kicinski@netronome.com> References: <20191127201646.25455-1-jakub.kicinski@netronome.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Looks like when BPF support was added by commit d3b18ad31f93 ("tls: add bpf support to sk_msg handling") and commit d829e9c4112b ("tls: convert to generic sk_msg interface") it broke/removed the support for in-place crypto as added by commit 4e6d47206c32 ("tls: Add support for inplace records encryption"). The inplace_crypto member of struct tls_rec is dead, inited to zero, and sometimes set to zero again. It used to be set to 1 when record was allocated, but the skmsg code doesn't seem to have been written with the idea of in-place crypto in mind. Since non trivial effort is required to bring the feature back and we don't really have the HW to measure the benefit just remove the left over support for now to avoid confusing readers. Signed-off-by: Jakub Kicinski Reviewed-by: Simon Horman --- include/net/tls.h | 1 - net/tls/tls_sw.c | 6 +----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/include/net/tls.h b/include/net/tls.h index 6ed91e82edd0..9d32f7ce6b31 100644 --- a/include/net/tls.h +++ b/include/net/tls.h @@ -100,7 +100,6 @@ struct tls_rec { struct list_head list; int tx_ready; int tx_flags; - int inplace_crypto; struct sk_msg msg_plaintext; struct sk_msg msg_encrypted; diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c index dbba51b69d21..5989dfe5c443 100644 --- a/net/tls/tls_sw.c +++ b/net/tls/tls_sw.c @@ -710,8 +710,7 @@ static int tls_push_record(struct sock *sk, int flags, } i = msg_pl->sg.start; - sg_chain(rec->sg_aead_in, 2, rec->inplace_crypto ? - &msg_en->sg.data[i] : &msg_pl->sg.data[i]); + sg_chain(rec->sg_aead_in, 2, &msg_pl->sg.data[i]); i = msg_en->sg.end; sk_msg_iter_var_prev(i); @@ -976,8 +975,6 @@ int tls_sw_sendmsg(struct sock *sk, struct msghdr *msg, size_t size) if (ret) goto fallback_to_reg_send; - rec->inplace_crypto = 0; - num_zc++; copied += try_to_copy; @@ -1176,7 +1173,6 @@ static int tls_sw_do_sendpage(struct sock *sk, struct page *page, tls_ctx->pending_open_record_frags = true; if (full_record || eor || sk_msg_full(msg_pl)) { - rec->inplace_crypto = 0; ret = bpf_exec_tx_verdict(msg_pl, sk, full_record, record_type, &copied, flags); if (ret) { From patchwork Wed Nov 27 20:16:44 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 1201782 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=netronome.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="MMWL/BEG"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 47NXCD2X5Kz9sR4 for ; Thu, 28 Nov 2019 07:18:16 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727275AbfK0USP (ORCPT ); Wed, 27 Nov 2019 15:18:15 -0500 Received: from mail-lf1-f66.google.com ([209.85.167.66]:35642 "EHLO mail-lf1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727166AbfK0USO (ORCPT ); Wed, 27 Nov 2019 15:18:14 -0500 Received: by mail-lf1-f66.google.com with SMTP id r15so15265025lff.2 for ; Wed, 27 Nov 2019 12:18:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=CTyVakY+FKaVZbH8OCz8X5WsDE7ShoVbvWz0mSzeKF4=; b=MMWL/BEGyswokmfED0cmNd/FTidFGtwRsbaX2ffc+Donchu7mlgjYG+VRFvZA+u4m+ B5+4tpoByqBn98ZxelCctiafiC8s2uWn8l99dSNMOgrcAfFtPCcSPhCbRHJ5CLqThUu0 x6Mui6W3Nmzs6OsiEJ9Dk2hshw638bIk8bNfyPKSDmpJraUjHfV26YNoGs5ed8FoLvJD b9MKzHsZOmk4YKMbaMJ6Jg+oSsE1T8/9g5nTxtxFNo1K+9NOm4Y8hKP2Py2b5VrK3vfe fLc2SdDZo3nsd1E0UjazFzRMus8++sPKTnVRWpmawW8tTFIJhRN3tZFrjUNMI42CNx3n YWYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=CTyVakY+FKaVZbH8OCz8X5WsDE7ShoVbvWz0mSzeKF4=; b=rytiQMFua96bbKQYZcMLWMpSrRNrBqlVaobl5g8ljYGOLXjiR6fSjOd712tDRkWrwY CAWM8rdxlYa/15ic/oyL1Ki1Hyi0RWor7N/HYNARnzQqCXWXvYPTrU57HVB8oVllNry5 Qmla2w7cyo7TtSMBGH+Tn5Yh6cgBsyq0KTPvMqrjxGow9GyNu0wGz7onQITzTyCEBPuN 7ACPdg6QtxDTiLZHvbz1jQ/hPDqIQgzYbBiGV6TZjmeZQZ0M384zgy6ubR4U+iseF4EI vsg9BLFf56fWsfLWIWEz9GxiQMVIXunfO8ThmA44QkuSzlOSjfeynAplvaVUcpOTqe5o BxTw== X-Gm-Message-State: APjAAAW+yNq7hEhaGu5iZviBMGJ1Y8beHi6GGeUPg/qPp6T4l2DNdRHs ONJrn9L8ukLcmNjtZoJde4QkSw== X-Google-Smtp-Source: APXvYqxP6gqBUeFW8aUJlv+T3BenSxo2PjvIJwvWFo25CYL0gt/TPms/T2IJeWCD6bg6C2dCLYcEdw== X-Received: by 2002:a19:4b48:: with SMTP id y69mr19812984lfa.140.1574885892624; Wed, 27 Nov 2019 12:18:12 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([66.60.152.14]) by smtp.gmail.com with ESMTPSA id r22sm7759739lji.71.2019.11.27.12.18.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Nov 2019 12:18:12 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, john.fastabend@gmail.com Cc: netdev@vger.kernel.org, oss-drivers@netronome.com, borisp@mellanox.com, aviadye@mellanox.com, daniel@iogearbox.net, Jakub Kicinski , Simon Horman Subject: [PATCH net 6/8] net/tls: use sg_next() to walk sg entries Date: Wed, 27 Nov 2019 12:16:44 -0800 Message-Id: <20191127201646.25455-7-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191127201646.25455-1-jakub.kicinski@netronome.com> References: <20191127201646.25455-1-jakub.kicinski@netronome.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Partially sent record cleanup path increments an SG entry directly instead of using sg_next(). This should not be a problem today, as encrypted messages should be always allocated as arrays. But given this is a cleanup path it's easy to miss was this ever to change. Use sg_next(), and simplify the code. Signed-off-by: Jakub Kicinski Reviewed-by: Simon Horman --- include/net/tls.h | 2 +- net/tls/tls_main.c | 13 ++----------- net/tls/tls_sw.c | 3 ++- 3 files changed, 5 insertions(+), 13 deletions(-) diff --git a/include/net/tls.h b/include/net/tls.h index 9d32f7ce6b31..df630f5fc723 100644 --- a/include/net/tls.h +++ b/include/net/tls.h @@ -376,7 +376,7 @@ int tls_push_sg(struct sock *sk, struct tls_context *ctx, int flags); int tls_push_partial_record(struct sock *sk, struct tls_context *ctx, int flags); -bool tls_free_partial_record(struct sock *sk, struct tls_context *ctx); +void tls_free_partial_record(struct sock *sk, struct tls_context *ctx); static inline struct tls_msg *tls_msg(struct sk_buff *skb) { diff --git a/net/tls/tls_main.c b/net/tls/tls_main.c index bdca31ffe6da..b3da6c5ab999 100644 --- a/net/tls/tls_main.c +++ b/net/tls/tls_main.c @@ -209,24 +209,15 @@ int tls_push_partial_record(struct sock *sk, struct tls_context *ctx, return tls_push_sg(sk, ctx, sg, offset, flags); } -bool tls_free_partial_record(struct sock *sk, struct tls_context *ctx) +void tls_free_partial_record(struct sock *sk, struct tls_context *ctx) { struct scatterlist *sg; - sg = ctx->partially_sent_record; - if (!sg) - return false; - - while (1) { + for (sg = ctx->partially_sent_record; sg; sg = sg_next(sg)) { put_page(sg_page(sg)); sk_mem_uncharge(sk, sg->length); - - if (sg_is_last(sg)) - break; - sg++; } ctx->partially_sent_record = NULL; - return true; } static void tls_write_space(struct sock *sk) diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c index 5989dfe5c443..2b2d0bae14a9 100644 --- a/net/tls/tls_sw.c +++ b/net/tls/tls_sw.c @@ -2089,7 +2089,8 @@ void tls_sw_release_resources_tx(struct sock *sk) /* Free up un-sent records in tx_list. First, free * the partially sent record if any at head of tx_list. */ - if (tls_free_partial_record(sk, tls_ctx)) { + if (tls_ctx->partially_sent_record) { + tls_free_partial_record(sk, tls_ctx); rec = list_first_entry(&ctx->tx_list, struct tls_rec, list); list_del(&rec->list); From patchwork Wed Nov 27 20:16:45 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 1201783 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=netronome.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="On1YKAUn"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 47NXCH3j2Jz9sR4 for ; Thu, 28 Nov 2019 07:18:19 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727297AbfK0USS (ORCPT ); Wed, 27 Nov 2019 15:18:18 -0500 Received: from mail-lf1-f68.google.com ([209.85.167.68]:46809 "EHLO mail-lf1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727166AbfK0USS (ORCPT ); Wed, 27 Nov 2019 15:18:18 -0500 Received: by mail-lf1-f68.google.com with SMTP id a17so18175439lfi.13 for ; Wed, 27 Nov 2019 12:18:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=GNm5U+SbQ/CB23zzHj1e0PLLCyq7ugRgikVFJWv5Sgg=; b=On1YKAUnFtRC7wfcMentIQgycdyVAkptl+JG+W4/hIlBjPTUxwJPRP45umifREFQfD dJVfTiI0PmZOfcWeurLU8LPP9FWm4lP8Eh8KYyxS/soZbaCxJL6s+UbSawrxsySn/IYO cLp7IAem+oOpaicno82sFEcJDSqFISZmQf3vQR2mjAMs0BFx84I8XnzTIW+N2isXOtIE IJ8EVJ/6aCWMvTAEoAMR6snJfP0WS0vlPqxRkHE4rcmBwXb/SosH34U8yzpgR2vEXWBS IcosK1kjg+s/fzUVJ7vhk4sBCKnsbpGX8uPC95+4FgFkg1hjXVW6djM4qgyxGR/2eHlC /sOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=GNm5U+SbQ/CB23zzHj1e0PLLCyq7ugRgikVFJWv5Sgg=; b=eWEIPx+nIYyNnRFvuNKXNgFYbKEiZmDx8MUnr0xFcqt80qkm/u9iTTFqfmNi1abQA2 ZjUWRID0mrZ7jeh5hAnEc8fSEskQwHMFgskM4qaUuk4AubMKWg8XruL89tKOp9pHBKr7 LIiL6ESOFyt4uIHZkeR2mWzZU8zAs1b5P8mp487tynFZDWTmQP5j85cfuiXXBTh4jfud uSBbcxG0qwJjYJAXTZqqISQOfNJN1XY8/Z1Cif8UxdIdjq150KShhF+CLbfYxpr3HQX6 9tAF1adJSXo14lOHEqm4J+nRzGCxwRAnnNIrsMRcFHdNryJ2jm4kpCSr4vMsEfYAZF3d PlUw== X-Gm-Message-State: APjAAAUspBK5Tvt8DKAQM6xg6/hD0B0TEzgvIQ/I6CPHKFui4i+RdUB2 SSRFOPJJNohVtG3rXb9tzgF96A== X-Google-Smtp-Source: APXvYqwmjFtlRzRpoGTOW56nl55IjeOQMhzMcaZPrUBuVRCqFqFx8U6Ass0+ij7RfmSCKC9vhiuSdA== X-Received: by 2002:a19:5f05:: with SMTP id t5mr6973608lfb.149.1574885895720; Wed, 27 Nov 2019 12:18:15 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([66.60.152.14]) by smtp.gmail.com with ESMTPSA id r22sm7759739lji.71.2019.11.27.12.18.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Nov 2019 12:18:15 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, john.fastabend@gmail.com Cc: netdev@vger.kernel.org, oss-drivers@netronome.com, borisp@mellanox.com, aviadye@mellanox.com, daniel@iogearbox.net, Jakub Kicinski , Simon Horman Subject: [PATCH net 7/8] selftests: bpf: test_sockmap: handle file creation failures gracefully Date: Wed, 27 Nov 2019 12:16:45 -0800 Message-Id: <20191127201646.25455-8-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191127201646.25455-1-jakub.kicinski@netronome.com> References: <20191127201646.25455-1-jakub.kicinski@netronome.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org test_sockmap creates a temporary file to use for sendpage. this may fail for various reasons. Handle the error rather than segfault. Signed-off-by: Jakub Kicinski Reviewed-by: Simon Horman --- tools/testing/selftests/bpf/test_sockmap.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/testing/selftests/bpf/test_sockmap.c b/tools/testing/selftests/bpf/test_sockmap.c index 3845144e2c91..8b838e91cfe5 100644 --- a/tools/testing/selftests/bpf/test_sockmap.c +++ b/tools/testing/selftests/bpf/test_sockmap.c @@ -332,6 +332,10 @@ static int msg_loop_sendpage(int fd, int iov_length, int cnt, int i, fp; file = fopen(".sendpage_tst.tmp", "w+"); + if (!file) { + perror("create file for sendpage"); + return 1; + } for (i = 0; i < iov_length * cnt; i++, k++) fwrite(&k, sizeof(char), 1, file); fflush(file); @@ -339,6 +343,11 @@ static int msg_loop_sendpage(int fd, int iov_length, int cnt, fclose(file); fp = open(".sendpage_tst.tmp", O_RDONLY); + if (fp < 0) { + perror("reopen file for sendpage"); + return 1; + } + clock_gettime(CLOCK_MONOTONIC, &s->start); for (i = 0; i < cnt; i++) { int sent = sendfile(fd, fp, NULL, iov_length); From patchwork Wed Nov 27 20:16:46 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 1201784 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=netronome.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="ZkEcyZX3"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 47NXCL5G4tz9sR8 for ; Thu, 28 Nov 2019 07:18:22 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727317AbfK0USW (ORCPT ); Wed, 27 Nov 2019 15:18:22 -0500 Received: from mail-lf1-f65.google.com ([209.85.167.65]:45030 "EHLO mail-lf1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727166AbfK0USV (ORCPT ); Wed, 27 Nov 2019 15:18:21 -0500 Received: by mail-lf1-f65.google.com with SMTP id v201so17152403lfa.11 for ; Wed, 27 Nov 2019 12:18:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=zhItHYyRpROl20O6Q10reTpn6F5PgUqWpU9th+0YblM=; b=ZkEcyZX392H/0zQcXa1ylngiMI6UR+46W/vMDBjhgkKA1bKfvAQo66gyzWMVreO0NV A+E8stc15xlHX8JoE5wj3xPjS+V5nY80oJVooiYXfXpg2OF9o2pANQy0EcJ4hJmgbcFc 7HlxJLBxaYKn+vrE8VqeQe6pEwfgAiracBrd9wxeSvdQdTFyEbNoOkXK3hk3sIcgKev3 gJLgW+VEAnWKkgrihabN0pZam6Mm4Y+GR+7Ps3YlMpesTfJoI5mjrhv8CwG6QUpXwTs7 bJXcsCyVxwY9l+sXLnymvs/qz0xs7fJOI0TysePPjVEzERzzgUrEwUGM583PPhWayHlM Pjtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zhItHYyRpROl20O6Q10reTpn6F5PgUqWpU9th+0YblM=; b=XGw9K7fX+snbKQ3z0FLu62J2tjgLCYhKQGtPF39SRykn8bHftDiyTqsocCC4kj/iv2 WiIpQU2DDtxiEaDpGAyYq+Fiixe/2RO7RBEe4QBVsDiQEWmrpVoTGZx1+wuj1NeeJCHa 3ogD2QnYZy2BOQ1Idz5g+ovZYPy3vWlq+mvdUkYcjdq0C2q0On9xhzUvJpBndCHqKovK M0Qa3mXyV+Br5ekfBXHy9GELRXEL+AV9Jjzb00+287HR7s4KMI4xsU5H9TiyB4BfTR6p jbIuZ1ampZJUBQWilkFv+/Fdf65PsoRi2l+LYqSfRodr4wfBMxYt+V20SC2LlErZTLx2 Nh+Q== X-Gm-Message-State: APjAAAXVf4BlIAGe58uQ2wLHTZhQgNU6QezGx5wiLSBHREtxvbNRPrs/ EMaG35pteZPL7rKSkhDYqUgFMQ== X-Google-Smtp-Source: APXvYqx5ZDmzpuAaRuRn1RPhrNuSJc8Xix+B4kop2KdpIvnkNQ0ZcrMDab1O/dXXSc072MhvI4vt/Q== X-Received: by 2002:ac2:5462:: with SMTP id e2mr20407657lfn.181.1574885898805; Wed, 27 Nov 2019 12:18:18 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([66.60.152.14]) by smtp.gmail.com with ESMTPSA id r22sm7759739lji.71.2019.11.27.12.18.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Nov 2019 12:18:18 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net, john.fastabend@gmail.com Cc: netdev@vger.kernel.org, oss-drivers@netronome.com, borisp@mellanox.com, aviadye@mellanox.com, daniel@iogearbox.net, Jakub Kicinski , Simon Horman Subject: [PATCH net 8/8] selftests: bpf: correct perror strings Date: Wed, 27 Nov 2019 12:16:46 -0800 Message-Id: <20191127201646.25455-9-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191127201646.25455-1-jakub.kicinski@netronome.com> References: <20191127201646.25455-1-jakub.kicinski@netronome.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org perror(str) is basically equivalent to print("%s: %s\n", str, strerror(errno)). New line or colon at the end of str is a mistake/breaks formatting. Signed-off-by: Jakub Kicinski Reviewed-by: Simon Horman --- tools/testing/selftests/bpf/test_sockmap.c | 38 +++++++++++----------- tools/testing/selftests/bpf/xdping.c | 2 +- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/tools/testing/selftests/bpf/test_sockmap.c b/tools/testing/selftests/bpf/test_sockmap.c index 8b838e91cfe5..4a851513c842 100644 --- a/tools/testing/selftests/bpf/test_sockmap.c +++ b/tools/testing/selftests/bpf/test_sockmap.c @@ -240,14 +240,14 @@ static int sockmap_init_sockets(int verbose) addr.sin_port = htons(S1_PORT); err = bind(s1, (struct sockaddr *)&addr, sizeof(addr)); if (err < 0) { - perror("bind s1 failed()\n"); + perror("bind s1 failed()"); return errno; } addr.sin_port = htons(S2_PORT); err = bind(s2, (struct sockaddr *)&addr, sizeof(addr)); if (err < 0) { - perror("bind s2 failed()\n"); + perror("bind s2 failed()"); return errno; } @@ -255,14 +255,14 @@ static int sockmap_init_sockets(int verbose) addr.sin_port = htons(S1_PORT); err = listen(s1, 32); if (err < 0) { - perror("listen s1 failed()\n"); + perror("listen s1 failed()"); return errno; } addr.sin_port = htons(S2_PORT); err = listen(s2, 32); if (err < 0) { - perror("listen s1 failed()\n"); + perror("listen s1 failed()"); return errno; } @@ -270,14 +270,14 @@ static int sockmap_init_sockets(int verbose) addr.sin_port = htons(S1_PORT); err = connect(c1, (struct sockaddr *)&addr, sizeof(addr)); if (err < 0 && errno != EINPROGRESS) { - perror("connect c1 failed()\n"); + perror("connect c1 failed()"); return errno; } addr.sin_port = htons(S2_PORT); err = connect(c2, (struct sockaddr *)&addr, sizeof(addr)); if (err < 0 && errno != EINPROGRESS) { - perror("connect c2 failed()\n"); + perror("connect c2 failed()"); return errno; } else if (err < 0) { err = 0; @@ -286,13 +286,13 @@ static int sockmap_init_sockets(int verbose) /* Accept Connecrtions */ p1 = accept(s1, NULL, NULL); if (p1 < 0) { - perror("accept s1 failed()\n"); + perror("accept s1 failed()"); return errno; } p2 = accept(s2, NULL, NULL); if (p2 < 0) { - perror("accept s1 failed()\n"); + perror("accept s1 failed()"); return errno; } @@ -353,7 +353,7 @@ static int msg_loop_sendpage(int fd, int iov_length, int cnt, int sent = sendfile(fd, fp, NULL, iov_length); if (!drop && sent < 0) { - perror("send loop error:"); + perror("send loop error"); close(fp); return sent; } else if (drop && sent >= 0) { @@ -472,7 +472,7 @@ static int msg_loop(int fd, int iov_count, int iov_length, int cnt, int sent = sendmsg(fd, &msg, flags); if (!drop && sent < 0) { - perror("send loop error:"); + perror("send loop error"); goto out_errno; } else if (drop && sent >= 0) { printf("send loop error expected: %i\n", sent); @@ -508,7 +508,7 @@ static int msg_loop(int fd, int iov_count, int iov_length, int cnt, total_bytes -= txmsg_pop_total; err = clock_gettime(CLOCK_MONOTONIC, &s->start); if (err < 0) - perror("recv start time: "); + perror("recv start time"); while (s->bytes_recvd < total_bytes) { if (txmsg_cork) { timeout.tv_sec = 0; @@ -552,7 +552,7 @@ static int msg_loop(int fd, int iov_count, int iov_length, int cnt, if (recv < 0) { if (errno != EWOULDBLOCK) { clock_gettime(CLOCK_MONOTONIC, &s->end); - perror("recv failed()\n"); + perror("recv failed()"); goto out_errno; } } @@ -566,7 +566,7 @@ static int msg_loop(int fd, int iov_count, int iov_length, int cnt, errno = msg_verify_data(&msg, recv, chunk_sz); if (errno) { - perror("data verify msg failed\n"); + perror("data verify msg failed"); goto out_errno; } if (recvp) { @@ -574,7 +574,7 @@ static int msg_loop(int fd, int iov_count, int iov_length, int cnt, recvp, chunk_sz); if (errno) { - perror("data verify msg_peek failed\n"); + perror("data verify msg_peek failed"); goto out_errno; } } @@ -663,7 +663,7 @@ static int sendmsg_test(struct sockmap_options *opt) err = 0; exit(err ? 1 : 0); } else if (rxpid == -1) { - perror("msg_loop_rx: "); + perror("msg_loop_rx"); return errno; } @@ -690,7 +690,7 @@ static int sendmsg_test(struct sockmap_options *opt) s.bytes_recvd, recvd_Bps, recvd_Bps/giga); exit(err ? 1 : 0); } else if (txpid == -1) { - perror("msg_loop_tx: "); + perror("msg_loop_tx"); return errno; } @@ -724,7 +724,7 @@ static int forever_ping_pong(int rate, struct sockmap_options *opt) /* Ping/Pong data from client to server */ sc = send(c1, buf, sizeof(buf), 0); if (sc < 0) { - perror("send failed()\n"); + perror("send failed()"); return sc; } @@ -757,7 +757,7 @@ static int forever_ping_pong(int rate, struct sockmap_options *opt) rc = recv(i, buf, sizeof(buf), 0); if (rc < 0) { if (errno != EWOULDBLOCK) { - perror("recv failed()\n"); + perror("recv failed()"); return rc; } } @@ -769,7 +769,7 @@ static int forever_ping_pong(int rate, struct sockmap_options *opt) sc = send(i, buf, rc, 0); if (sc < 0) { - perror("send failed()\n"); + perror("send failed()"); return sc; } } diff --git a/tools/testing/selftests/bpf/xdping.c b/tools/testing/selftests/bpf/xdping.c index d60a343b1371..842d9155d36c 100644 --- a/tools/testing/selftests/bpf/xdping.c +++ b/tools/testing/selftests/bpf/xdping.c @@ -45,7 +45,7 @@ static int get_stats(int fd, __u16 count, __u32 raddr) printf("\nXDP RTT data:\n"); if (bpf_map_lookup_elem(fd, &raddr, &pinginfo)) { - perror("bpf_map_lookup elem: "); + perror("bpf_map_lookup elem"); return 1; }