From patchwork Mon Feb 3 17:01:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Seiderer X-Patchwork-Id: 13957874 X-Patchwork-Delegate: kuba@kernel.org Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) (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 9E9D420F06C; Mon, 3 Feb 2025 17:02:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.19 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738602166; cv=none; b=ococLst5eWZSR8k4nwryu1f1RhUdfTfsvS1oBOyWc0ZZMfjTO9IrvS+VnvUWyUHQzZli0EWbWVC1gHjPyDaVJprp0LcJ66svQZgxjGHAiJxJDk6He29wF10ikLV4ptE2MTI5QjWCkGNBeePqFS2UR71kSjms6MI2mPWY0J3PIZI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738602166; c=relaxed/simple; bh=XQcXY8W5zssQPj2vDW6XqskIpgYXaRZL4eRGC+4TkVU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KjvRPamQHEwB5/uYkiWIkiUeZkQWBdpHh4CRAb9vwe8KJ2qlPRtUVp4hafIl3lXxJqApu02IPkboQxaxr/prqy3nR0qSpAkWlX44OQutMFHwffa49nGWMnuAlAN+u2UQvr3u31ZCzHRyHlfVyNbbIzAsqldFfE3Pw5OjqB4vdRM= 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=PsWZuBTq; arc=none smtp.client-ip=212.227.15.19 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="PsWZuBTq" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1738602150; x=1739206950; i=ps.report@gmx.net; bh=XQcXY8W5zssQPj2vDW6XqskIpgYXaRZL4eRGC+4TkVU=; 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=PsWZuBTqSOm4c4wiwI9XfNfp7M1TqbjYw0uGdTiBvFIDo2+YdYeccVbYhbkKW0QS fFlDVreNAxdRyDqgVtHDN4LkHdi2a1jfuG1dYx4yzrKShoN+7bFwV8fDO+A9DqtqE xzNjGGSJLmwe1PyOzzyoqA6ZEsZtgih+QEk45r+JfitvzUcF78XbBs1Ksi2TarY48 Jo9b+wlozNRouKlAqy7KQ7L2aRSCZYgE+PgIv5svuknRRF8kYOGvcI2z/t2Ed7v4y wXhtFnK5Vfbn2/MUdKIWQrbQsUFxc4SvM8maz+OnMc3ycs5L3E+uMUa+dEh/iRjV5 rEILd3XnQLRH/D6+Yw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from localhost.fritz.box ([82.135.81.54]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1N5VHM-1tLUoW0Rpq-00t89K; Mon, 03 Feb 2025 18:02:30 +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 , Nam Cao , Thomas Gleixner , Frederic Weisbecker , Artem Chernyshev , Peter Seiderer Subject: [PATCH net-next v3 06/10] net: pktgen: fix ctrl interface command parsing Date: Mon, 3 Feb 2025 18:01:57 +0100 Message-ID: <20250203170201.1661703-7-ps.report@gmx.net> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250203170201.1661703-1-ps.report@gmx.net> References: <20250203170201.1661703-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:wtL+52vE8hHckBdnXpaZb6Eriegov/kJm2yLUR6acMUq7GQ8Dil IBtMlrMWXi2nqMnM7thqErv8MEQMt2lhdHRbNmIMxROSaomLlz+azyHRfqkhh2Li3oz05WG znr+DdqZVav604WevHEPJS+W8hxJBnhcXUinaD9/q8NAjTzoUx8KyWClmwOwiOioNmvs3uD 3IhWGG/qS9Wpntc0HjP2A== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:IED8DqB2qqk=;bsP+S726eAr85DsxAcmpbhuYdMg CXG24Ah6QCs2/cqm89PSI2NuHKUV7Wf9DADkEZVe3QlJ8sSJsGsR8aT/R8SiT3Lbg7Hx6Y93J 2WxcMTErVBuhh+5btjNcUS7rjDkmQHBiugJn2ePjyOnZML2NlhqTavpOJwVBeNDOlrxlS1EN7 Iwtex4FaskhBXcOcm2tt/E5MWwFiCh9qNzLlowwa8IIs+sBItJEi40wvWP9Wji0Cm/C2OYfWs 9pM2+SgyhTVSfrGXgImo/bLWugjyAZomD7UU1K9G8yRWOeZvFM2f8+KmjP0kz/Xo4PTfzcVC9 tXTltYgoyeOnM2P5d8wrmwHUIC9t2CM2s2tvFeeDGEF4em0ylgxUIMFfcrdkc84Z1NSUEI355 VFDmvwrHR0prLZHT6M8WDzkhwPCDaZ4krrldRBjyZDuy4ttdCpHH45nJU1TOjhcmK+gCDAmLO pF97dzvjbkdJKsx8FnbWWJQCVfutE2MXETlOSJNDThTXhUmTxrC4mB9XhBKMBYvbNBHl55fla Cv7cGeJGly9Mqfo7EavcNzAYHV9YjQTVxfaY3k8JxcrbErPcEuCpMdzrdLuDZFzAMSd1e+FWt s8F2UEBC9CMoGz/2AY9Zs7GOD+ha3yKuLdLMsbfW5/mXneePLm/J1BuPObNk08d9vfz0zPAGU /Cd77Zy13g2F97pkPANQxKVg2+SNjdTGpth3jYmMlmYTIFcABlFwmfeLCnnXZqD6fGcJrfZno Z1RuH+tHxxWIJRN6lWRCU2aGTyaW9+vnEXzQH48ISPSCSdNpy0+obuW75lNQRbDAmKGhl357H +9bpJ3IvPTBIPW3OVlX3gWp5tjpdyPMigQAy5fsSwnS0Rk4UTUXAX5q2wxeyYnPqyEBJ2nz4k 0YIpF3ZiJJfY2ejussFA5PKAvuj0xeB+QckOrvhhj5C5spA3pIUmr/lJg1wvGrHKrcr/rMt5r WuyWZ+98u3MzFhipIkHaIEfOi6YFMiwQA+oa6i6OKTLKDCIg5iyithfWETj2AeoYznNqvhFv3 lO0jaVsa+alCNdH6G99ECAmky2ifJIspVpYF+khPsXpiJOP2mZKq6zi0P+e8NC/ox1AZUvSot G3RDid49afaNcJjUKCLRiuCyqZlqD/pMtojffq1zB6P7Kfz03Ze6bbxZsHVJHzcJhQbpRHUcB fKZoN1wvp+/vUa2mImUkB29H61MUAMpIhIf9rnJt+qs+4AZ1YBvnKO1SYiR/DlVH5MlemEwWJ eE7oapPUEBYNSKq/dU2ln2TOT1yXZmWBqHczRBF7yTl3XIjvYcvhYCuLaykM/NBVKrSuJ7HB4 GXenAwagGo9xhv8edp2o9qzybPGqlLmjAvImlNxW8TX0JA= 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 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);