From patchwork Thu Feb 13 11:00:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Seiderer X-Patchwork-Id: 864975 Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) (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 2B17821576D; Thu, 13 Feb 2025 11:00:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.22 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739444456; cv=none; b=Pee0WPC0pDEwssWzZ+p7HHatYzFKEkzHtdPAkIGeL4R8H5qe5XSgdJeMtpzmDh6wa7h7HwPfaRSgwHwZKHP5X/6bJrREXesVtC5HWSl555sUksvUWzZH/HYOOJ+ifDi3cG0/Efuz497LEaj7EsBMRGnB6TY4NvDk3+1+Zi9qAs4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739444456; c=relaxed/simple; bh=FXOukLshRwD3TGePfrJUyNPMP7nk+xOAjD4QyzMCnyo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=p0wccSk9w7IGhqJxU8T5ebWTZ7P3n7ZGjhAhj1ARHMlpAJr8ECGTkulTT/VZvqiORFqNafKrY/cFPxGEKKe4NMREd6wOrddfdWhqIFbvicx6Kf8acspRmLISGgXa40VfJrtl0tnjEKg95ptRiJ6UDah4u+PknpMIzwNUfLDI048= 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=Bb3JqgpQ; arc=none smtp.client-ip=212.227.17.22 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="Bb3JqgpQ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1739444432; x=1740049232; i=ps.report@gmx.net; bh=FXOukLshRwD3TGePfrJUyNPMP7nk+xOAjD4QyzMCnyo=; 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=Bb3JqgpQRPtQlMieJg58bvcyXnabCRow7DX1S4xHA8dQLeA4Twe5zoV9ONnipXDm Eua6eAq+y1AVNr41/cg2nmQaKNxwfwIsNi49/islX95MfVTFTlYwffnGRzY/r8qUl gr7bbmf2zGGezcBfSOz1wPJm8hAgRXqhILf6JIogQvs7HrYTvi8t6pS9W6CD7x3Ej NFH93WGs2H1w2vtAC5ryFtLZAaktq4gLlfEI/CLG/lzOi+bqimt9wUPLRCMv9fJuI 3RlKt0eSQytJAdUJ8hTbKwmW8SUlshzDjArwhNNNwUp5CcslhLm4Sc96VDFUBOAoM LwJ+4LNS7DBtqhQm1A== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from localhost.fritz.box ([82.135.81.197]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MacSY-1t7YVu0keY-00pCi8; Thu, 13 Feb 2025 12:00:32 +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 , Artem Chernyshev , Nam Cao , Frederic Weisbecker Subject: [PATCH net-next v5 6/8] net: pktgen: fix ctrl interface command parsing Date: Thu, 13 Feb 2025 12:00:23 +0100 Message-ID: <20250213110025.1436160-7-ps.report@gmx.net> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250213110025.1436160-1-ps.report@gmx.net> References: <20250213110025.1436160-1-ps.report@gmx.net> Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:bckGzX9xcjDIeR13lfMu9Dmgjb5TEE2Ttqyx1uXqLPgTmXoZhUw WQO3RSwWkoj6NjHtvfF8Vjbh6xoxt7BoJxpLB7ipApq0eX1Y5QkF0Jpry3cs8MIB+YW95iu 2Ki36QovjxCrmUblh8kku7DORuTV3N8h/8xWQfdxg9M7KHTYwgQPkE1CU55LxCNltERS+Qb Pn6PhqqW8VzZPmhqhhxog== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:Q5kE7y0woMM=;gBsHYENiDYlh+9ckv98klxhhk9c wad6IzBnq5ctx665AXwgPKU7p14hE+A70YwEzUkCKixo7zACSSSNzaI48RVSFvqn9yPxpke3j z5IKiOsc0nTgtlF0Fwung4scEFHrQQb+uDWzsY4ExbzImlsMzqg5ZjRZw3oWVQFNimdFjrk0K GOM8FG6mSdDNfHLHhvu9+XGkHGm4B8/AVz1TozmyvTlqtkeqCJ3lUg7Q/zMbrJ4/kRfN9Ll8Y o3Z8hL6z7Hb3r1LrEfshZjHJLtUUsUZBHBRrINCH+U7xq9Wbpy1D66PQNJ1XN0/MM7nAaJ2nH EyPhqH5fqM8GyPhAV/dH8FvdMyEFMgv2yQMcYa2H+NT5u/PVYSY5jXRyaHFSME/YQfmuGJzsy zyif4loQI25ECIWxAFFU5++stevec/blZN/ZWJjQxPhKEvyRQ8bbslamKU034+bh3/96VhNVW j46fte02WMXh8GIAgGR4SvbeXQomScKA9I+T4+ba3XEUTh+RoiY3IXFty9sRT0jb6fEHcj5oF 66Lpf+X2hXC+IOqa7r+UwKo+dcORO1Y8gPbwsRxMJ7IwY/YsImfS3U47X39KhsumMedL5KbzS GVLmNeAFehTxr3GJKCQ13CzyEbg76ZtLeqoU6aoeBdDubOSXBK27NefwZFOaidG7W96J5Uvor F/q5Z7tyIvZYvv1+wlvjn6SlCs0Y1RrutcPCDffP+zTvKkMncIRHKA9mNGfiOLUIkeD2RksJX 1h/y6LJuwGTkTZzAba4Mp207wwo0kky+P1EZ88hHcxDNeVP10LL4lIZWjdlWVSTTkqpmxWKK8 qykOJ1k3U2JaZl0cc6fhigvMBu4BPdd0yT9ZE3YDh/fcIkDth9+qlLAuY3ZEbhS+s3/fXSc/p KBj3CrciqT+hhErAwGKXvZiwAa156HqQ4b9YDQOYWbfqBNQ2t8gpgZqk9j4GkgUrIk1xBBe0A QIeyt/dQQPcxwejHphO4p71Yu6zVZj+lR7cMRS60YHZ6LGgcwlmUXZ3gXx1JgX28i7cGVcZYV wa4vMGCKac8ulHnHlEEJLqkz3UUnZvLy9+SvAXUe3vDtA6cxx+XnBhYf/qqXdLEadKGv4d5ni d8KRJLmoHeDQW/fBI7rCyVqB5CdWV68whnnba/rMCd7v9PxHCaxqJA3GdKPLVKpJ6GcCA/8wd JsEeX55D2tuiJKpWRHk7FIpVxwl9rklN9rdVB66TPXtoI0w48G7PfbryaxEiL3wMnM/YO0ePc EgdKlwZF+sMXncvcecuMLlj3XffCY9BPLpwV0KCxgvQeS/lyk9p02ubq/WnnPPjZZeEm91HHA o0iqwFx4IGgvtqGpByXUsDM2xKqPN4VRS42JlnBT5Wl/8GGZ9LaXyd+QkBovFFXndAA+3FzKQ 83ifSWD+D2ok0LkHtAsxN0U3pxqJO0watyw7EbhMp1CWH/KEcGXoEXQ1eL 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 v4 -> v5 - split up patchset into part i/ii (suggested 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);