From patchwork Wed Feb 5 13:11:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Seiderer X-Patchwork-Id: 13961038 X-Patchwork-Delegate: kuba@kernel.org Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D8DDE13D509; Wed, 5 Feb 2025 13:12:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761128; cv=none; b=VcZ3IQC6zxthGHnNaOCyN/I6jsExlAuIvy/9mVKImTIB2LRWHN1X6sgpwLk4QkXloqeS6KDUagmShcv5cb4JoCy4v7zJPc9zQ6myvc5Bae1LurJUVrxtkvF2kL14RDLXkHgdFxf8I6Cao1AonJ1UPZYcxSbPry4cWDzx5TmjLzk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761128; c=relaxed/simple; bh=ySoD5uk4dTQ1BIVYf4nCjV0ocFzd477vnmhR9UR8pD8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=oZgnbGhQnT0I12kFf7TpnEIHtmzLnGr+XgKf5kvyam1Vh1G6JTXpHA0HiKmn4Mt0iDxgtJc0lltP60xy+iyoS9j/Tk3gBN3lb/CwYUwTPFQ7zWGJkltqpU6wZWLYASOw52H48GaEJ5H/vGZWhi+AgqMPa9R7U5h6BDzrqMSaXH8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.net; spf=pass smtp.mailfrom=gmx.net; dkim=pass (2048-bit key) header.d=gmx.net header.i=ps.report@gmx.net header.b=MT/VvVF9; arc=none smtp.client-ip=212.227.15.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.net header.i=ps.report@gmx.net header.b="MT/VvVF9" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1738761122; x=1739365922; i=ps.report@gmx.net; bh=ySoD5uk4dTQ1BIVYf4nCjV0ocFzd477vnmhR9UR8pD8=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-ID:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=MT/VvVF90Q7RIyF3XWnlARFpu0JdMGpgUQhVni80aawV/iGszc4g3VNi5Fqn4d+s SlZh8T119rwZJTLknCN7gZLwOfmfJSFi2EJdyHRmXax3JKvOrRYzkR29ZiWwjj3km FatmP/8rd/VIpysOt/meDV3B9fgVBTAoP/BM19Ft302p8Tr9i24pMMQx/h10oRDv6 TK5TLm0/yn/IMPsoc5Zmn/NgK9AfmVqsUQfSdo9XbrCT8cnqHgb9TUX11Ik0OC2df 5kbCD49OvtF9Ffk/5QzMzfQPPaRhVCvJI44rDeUKfs41wHwISJ0KMlrp2/Qd9q0PI CNxRoiyTbi3xgidPOw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from localhost.fritz.box ([82.135.81.162]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MG9gE-1teYjW284q-00BWxS; Wed, 05 Feb 2025 14:12:02 +0100 From: Peter Seiderer To: netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan , Peter Seiderer Subject: [PATCH net-next v4 06/17] net: pktgen: fix ctrl interface command parsing Date: Wed, 5 Feb 2025 14:11:42 +0100 Message-ID: <20250205131153.476278-7-ps.report@gmx.net> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250205131153.476278-1-ps.report@gmx.net> References: <20250205131153.476278-1-ps.report@gmx.net> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:H/vMqvknTrOKwdYIUTWwVwtlqy9397MufAra7x/UUpArpnbZitV CtGhVPA1OEuf2H9BDrE1DFuIb46zXK5z6X7YEDZQ1wlgMdjnEVq4vO10V5SoHBcCdaDUt9V dRdyJHb+18esrqkEHbZ6nTj7pDzX/Sgl38/We6FXxB7t2VM4pXERdgtjN82oh7Gx28B6z7C j5z5bVRqG8bYe/r/YMVlg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:XnaqEtoAsBg=;salnXrICS9T2k3nMDoY7O0kCE0E sbGM2XFOMpULjv/cZ4VLox6mMs/ZU2sSFyB1dHLtHw8b8HE18ZlZ2XjTjzLv7vPdAnEyqtw7z wFGIH1K/WmOypnIP1VthT/prKdxmVKS3v0M2wkwXPKMPElMiO+JAOx1Eas27r/a/pveFMtSXc Gk55pZ8Y98hDvNfyBAbrDydMRI4MtuBUfvuFEXBfZUQvprJz3s+W6ZHAeUWn7ASnFqOzGwYdV FOF75ig/3/d5zOm+hGIrSSu1himviLpWDQqsl9xkwTM5h0NuUPzOM50/dnhnLUEgrT3lHpKam lqAg6rsQ6TGlq/+hL/w+vTwSKQdlISqN5tJ2WRscF4uchYPHf6ojowwf/oV/KGk+CLD5nR3UO SF1eS96C/fBKEUfavG/7zgS5igoshLJuy6LQ0I1v+oRBuIayILSE665ItfpfoKAAC8VPkaxg6 PsEB6dtAkHlWjOf0s/7E6grf4/ZQxqHybcaxvukSNvmCzUMv85lBMzvi6OihY/i/VUDHprnln Eo6zhacoCKtJiOr32jgZLz3pghqpdLDxkFO5Y7DA12hjDOb9s2/5qhmnAq0xRuFHKI9GxjLxR nMVcFrv447iQuHc+28s3RLunaRbQpf1DtHq9x/k0K+bpizO4rkDe3jQKZjElWODLiLQY4c5h8 fHE8a3jUE4mk2C6GUF9b2ssJQ1lK+tFGUhjziZk1m2RMHtE7Qhjc4zSUIIqbKSmdlh/z+C1ZG zc7g/v0tJeYPD0IgFJa7A7WLz8CawAhekkb4/I+SXJghrRNOTP+hIzp4BwqSbttJmLYw9duQu WOsVo4vKUB1UnHFEeTJjHrfpwCWsuNw6zcogqSxHnII7VGJV/tN0A7loPW9VGpEDzSVY2OLcJ ZQK0uln+4GDQjh7GudH6qT/XSuSYNwxWcM+/6eMilr8XQZIBs2ywJ4TnU4kf5Lt6HGvduNdnL 8y/fMaMzhu+uweJhH0v9tal0NINJ379hKrW5BxveUzfENN6Ree09gHgYopoM8Y7FLuB14Lq50 WaNIZ6JsvrHYXdGuOUzKR4w7VmdxQct/IfsL/p3Vj/BIB0Wp9XhaFCfSO317fm3KvGIVsFDq7 qUDfvbjotCAKoOWECteBq9sgalulQt3XbUCsvW60qmTYgguKdSYeRi/m6mQFA5wYtfmeQGqsV nog0QS97iCgz6P8czZ+fLjGGrdV9ixi417/Y+pVJV5GiLQMkoOFlN10Skc4JO/vHen1/zgxPJ B+NkwuwwKZHuCQ7qX2/9EyZo6z7E/OS1iVgPviBRXAM9EAOJN6HvRke3vjSDaYrV1mSVrOLlh iYdnvGyNWCGbQBDMNSMGm8tFaxYR9Sr1wkw9Z+gOcy0bic= X-Patchwork-Delegate: kuba@kernel.org Enable command writing without trailing '\n': - the good case $ echo "reset" > /proc/net/pktgen/pgctrl - the bad case (before the patch) $ echo -n "reset" > /proc/net/pktgen/pgctrl -bash: echo: write error: Invalid argument - with patch applied $ echo -n "reset" > /proc/net/pktgen/pgctrl Signed-off-by: Peter Seiderer Reviewed-by: Simon Horman --- Changes v3 -> v4 - add rev-by Simon Horman Changes v2 -> v3: - new patch --- net/core/pktgen.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/net/core/pktgen.c b/net/core/pktgen.c index c8a5b4d17407..f6e35ba035c7 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -517,21 +517,23 @@ static ssize_t pgctrl_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos) { char data[128]; + size_t max; struct pktgen_net *pn = net_generic(current->nsproxy->net_ns, pg_net_id); if (!capable(CAP_NET_ADMIN)) return -EPERM; - if (count == 0) + if (count < 1) return -EINVAL; - if (count > sizeof(data)) - count = sizeof(data); - - if (copy_from_user(data, buf, count)) + max = min(count, sizeof(data) - 1); + if (copy_from_user(data, buf, max)) return -EFAULT; - data[count - 1] = 0; /* Strip trailing '\n' and terminate string */ + if (data[max - 1] == '\n') + data[max - 1] = 0; /* strip trailing '\n', terminate string */ + else + data[max] = 0; /* terminate string */ if (!strcmp(data, "stop")) pktgen_stop_all_threads(pn);