From patchwork Thu Feb 27 13:56:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Seiderer X-Patchwork-Id: 869129 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (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 789B8232364; Thu, 27 Feb 2025 13:56:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.20 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740664606; cv=none; b=CWewBK9/1gOdMbkUHuHblxBoqsyMqGUmfubvGE+ztovb4fu934K4mtBB4cb+VdG1rW+a9N8qEvTxov5QarMLkBflqqM8TUZixSBBmg+YvPBvvvmwpms8dPOgNPt7JQ84WVBImCAEud8tVpi/ktBHIQ1FaFMxD+9bwHRQ0KrcmZs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740664606; c=relaxed/simple; bh=U55Wfaml+iLmuDzRSmhF6XHXxgqauTNIupr+1KWPRZk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cJtqATs50LjAn9XGY7YBr9EzI1Sa208yI2FryKB6laFqXit5yq2wYJFVD7EoGZJesuuzkcpJ/NSjtyfgwBDfJBinoCINSNZiOZG3bCPaataL47BGwFx5Ypa29gQLfv2tcO2vxMBoU0vD4YsYW5tJre/rpCXdVksO0ANPyAfe6vk= 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=sbP/y1Hc; arc=none smtp.client-ip=212.227.17.20 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="sbP/y1Hc" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1740664576; x=1741269376; i=ps.report@gmx.net; bh=U55Wfaml+iLmuDzRSmhF6XHXxgqauTNIupr+1KWPRZk=; 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=sbP/y1HctdaY8Nyn4Uj1Kx3Hpt1Ful3MvpliXfrPzCnncEqeMmBGchyUtAhfRsnb I2z0VnLKXfPzPM2YX5f71UTMm/EHMlsozLped3ZSRRNBJiozSy6r88s5yxsfTrEoH 2trK96horOzs4+B5AQfxmGS091MrxysLIlq26zAjb0MzcVFileL+brqIK5H+w9OE1 XnDyJX5kR1Fwlt+jaJbNA6MABwn21EQneQmMGg7WMTodHrFaOiVB2oc3j0ZoVvfRN C24gwFlzSzm89ZDZ5oJkIHKauMn/PyvLYP/EbyqVd8+bbbLmZYrCzpzPpLeVYuoSa wOMX1sO9jWpiLgYkwA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from localhost.fritz.box ([82.135.81.151]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MOiDX-1teVfc47Dz-00UlyI; Thu, 27 Feb 2025 14:56:16 +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 , Fedor Pchelkin , Arnd Bergmann , Nam Cao Subject: [PATCH net-next v8 6/8] net: pktgen: fix mpls reset parsing Date: Thu, 27 Feb 2025 14:56:02 +0100 Message-ID: <20250227135604.40024-7-ps.report@gmx.net> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250227135604.40024-1-ps.report@gmx.net> References: <20250227135604.40024-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:qXH4O+ui+hIs/MVWTwQuygtjseriezg+brhpV1ZDBDiz3fuL7Wl wYa5VCSKSkYbDBCwgBCjz6XYP8ui5EnBFVXhQVcB8jNdAuqroAP6BwSwmIfFF7zZiDSlFG6 Yp75Vp7EoLYljsBAeWbj/ZBtVyT8HBqQx/WuIDWfI6OD0fLIC0m5HmIYxuwrl2l+AVq1APn M6xYHprMtAoH8MRbUr/HQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:ONC9ffTbhzc=;KaLBZ5Z2xVz2txuGiXrKGFlbIZK SIl7YKx4TqQ//onW/OXIJlvA8SvDInNHsBK/fAniAJHFt2RePoLNvAHt9J9jiCmSxv7w4Enu2 XwDXj0a19gBsw0ECL+Ay1rXgY+SSEmZ7O+EsoUekm4Kz7ZhlN9u/geuylwKLKymg2s4c2Tq+8 njAyd0fwyXPkk3EM/jSYdD9vlLr8Fr0JP8FB/VCaattrYSFTt/DQQYb5bHUnglh4quQtNF6WU mVHR4lq1Bd/UuvO/FRUleFvcrfEkGaGfIUyammSTR1JWfAnnVtuzvMcr/Kz7WAoV51dDiqFsD xzgjfArV7Y5Dgk4GF//JyLh/y9mFllBXxDF1NjBOaDJQWGI+fKjMkuBU2q8a4Cl87mXJg7qtB bVCFZcpnCDHHWVyOJIaji2m78tujD6mxX/+jx4L01X07b0g+QLB9rRwUaZJfoYDDdeJ55jD/V 6x1+iahhWjlCya0zSDx3aX9GFiYXgBLxZ3bt/Bv1pgu3blNIquLLAxgWjxDcJfL8GinNg/F4j cB5UkgtDWibQL6f09xD+AHhywJi4eugNgMni9DF78cpz3LPCTTntn1bxBXu1WhRtgm6UteHiY v7Kv7VDucDpZlxE3bvF99HqCb9uD47I0tGdf0dgL9bJct86CIqHmWIG0jmV2v2rpgkUP5XWt6 my1o8Obxm8qfTIP78ikVUAOKtHI7zNnuqG8iUilioXOe5vnFMQhR48QJduQezDqaKh6NhgjPW uXBCpBNmTtkggrtx6lTI7QTJ7QddywGt8Tdz+d0JNV4hyDoPooEMe0zK7zvbMPBGIZBw10Gbj HqAJEBf9VyDZHhtCCMC0CHzQjuS1NuR9nkZHtLxHuK7jht2V00pSjX+yc8q/5KYrjJTHyH+X3 xfT31ElIRHBdZ1HHOWzYvG762aLv2YtOQaneh7UczKTcEYeGyNtsCDVJxi+k39W9b8mCq2vm0 mH2CXrEK/jWc70SvnwsBMoTKNU0ovBI0iqFh+opGPtdQMa7/AdCZsslYvDYiMvPz/LYO7PNkG QYUJePss2rL6yATr0we8gzgj8rJcivGshVC1HMIxvPu1yvCBt+8hnCuoBJffsSsBf/+gtMJGM 5GWoOkXLaMOyrxZI1FcgD+fQvukKo+81LyYDP2gLEJUrO5i6mW/mVo8YAZoKdwvT66VyvjQyI drEuOFNlO1zLQn3Ge5mIwzWipSI/fCm4gyhXNofZP0BVdkZEvNezGv1vZ3qKiuAeiT1f9iYCN Bhh1Qor0qssSGKd+0MNklhLkNnV0C5VLjIoPDbKvvjlYya5pOWCZPExA4e0mFCyn6A0nYwj3w W0JAGQsaedXaFFKwIqRvTXwtT4sWjDobIboss57qNSCgt0/HlU2iSbHnQT+QPubvhr8yexTg6 3FRZtt7VWNu+1PbYBO4i0XDSPNIYNr6NS/QFc06CHi9kyt5BxE0Z+jeMn2 Fix mpls list reset parsing to work as describe in Documentation/networking/pktgen.rst: pgset "mpls 0" turn off mpls (or any invalid argument works too!) - before the patch $ echo "mpls 00000001,00000002" > /proc/net/pktgen/lo\@0 $ grep mpls /proc/net/pktgen/lo\@0 mpls: 00000001, 00000002 Result: OK: mpls=00000001,00000002 $ echo "mpls 00000001,00000002" > /proc/net/pktgen/lo\@0 $ echo "mpls 0" > /proc/net/pktgen/lo\@0 $ grep mpls /proc/net/pktgen/lo\@0 mpls: 00000000 Result: OK: mpls=00000000 $ echo "mpls 00000001,00000002" > /proc/net/pktgen/lo\@0 $ echo "mpls invalid" > /proc/net/pktgen/lo\@0 $ grep mpls /proc/net/pktgen/lo\@0 Result: OK: mpls= - after the patch $ echo "mpls 00000001,00000002" > /proc/net/pktgen/lo\@0 $ grep mpls /proc/net/pktgen/lo\@0 mpls: 00000001, 00000002 Result: OK: mpls=00000001,00000002 $ echo "mpls 00000001,00000002" > /proc/net/pktgen/lo\@0 $ echo "mpls 0" > /proc/net/pktgen/lo\@0 $ grep mpls /proc/net/pktgen/lo\@0 Result: OK: mpls= $ echo "mpls 00000001,00000002" > /proc/net/pktgen/lo\@0 $ echo "mpls invalid" > /proc/net/pktgen/lo\@0 $ grep mpls /proc/net/pktgen/lo\@0 Result: OK: mpls= Signed-off-by: Peter Seiderer Reviewed-by: Simon Horman --- Changes v7 -> v8 - rebased on actual net-next/main - fix c99 comment (suggested by Paolo Abeni) Changes v6 -> v7 - rebased on actual net-next/main - no changes Changes v5 -> v6 - no changes 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 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/net/core/pktgen.c b/net/core/pktgen.c index f4f9c9d83694..c604a68f2840 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -913,8 +913,13 @@ static ssize_t get_labels(const char __user *buffer, max = min(8, maxlen - i); len = hex32_arg(&buffer[i], max, &tmp); - if (len <= 0) + if (len < 0) return len; + + /* return empty list in case of invalid input or zero value */ + if (len == 0 || tmp == 0) + return maxlen; + pkt_dev->labels[n] = htonl(tmp); if (pkt_dev->labels[n] & MPLS_STACK_BOTTOM) pkt_dev->flags |= F_MPLS_RND;