From patchwork Fri Feb 21 21:52:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Seiderer X-Patchwork-Id: 13986355 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 BD6AA254AFC; Fri, 21 Feb 2025 21:53:09 +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=1740174791; cv=none; b=DIIfy5wcQF25oupJYuAt5G1SLsgdFCSjgYl09wnVD3lGRKWH3zEPIpOW6fsokwnCBt1OhdkOZlWch2H/TNMgI3UDbGB3qkbalXlKO1XDe6HdJaag1rYco5dLqaY3/nQUH4v0MXnMR/CIktGa0RnjMhEKss1C3jXtP0eLVQ1qpYY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740174791; c=relaxed/simple; bh=Qwm/ZyjpdhkDocHMi8i0ILfU4x9hiN8jcpFLjrntmoY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=C3gHb0j28gvVIgMzSymh6/nz5lNAVIEi5wvNTs2QTxFyYwc+JAuon1r95UQMGzL0N+QkC0rxTfmxvu68aXwg1NC0OI8W46plceP57N9CUQiD1Xdm7PYqgie3F6BywkK3kMmb+qEYGiKeOZ8btvqeZAucH36s7UxvqLfc4aFzeUU= 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=qqXXQ370; 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="qqXXQ370" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1740174772; x=1740779572; i=ps.report@gmx.net; bh=Qwm/ZyjpdhkDocHMi8i0ILfU4x9hiN8jcpFLjrntmoY=; 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=qqXXQ370oFnCrQBLYEVKs1nHXoRDqA1ZhAjqhAPRLfu4sjpodQVzHtPCU5XJlIWG XCMpi0Pjr85cLkoyrTKYG+YBL39Mq4EMpJY4VX1Bpxb/x1RHfuqHHreVMoNAZN8FR UzHiRtkcON5DiIx2qPrld+PG3iRd6hTPO7OqrciS4evAy0NuAKke7lJkg4ycjUWPe y2DfJ/+n6R4UlaGrb9gYTfbofGISfZUx+lCsfjpJEhH3Ka/Lhr6M5fhnH3Geegwws lGJ2ljflG6hyXOf01G1NBSSsWmjsP1CS5kIabLYU1YkPzvugDcUWIJTpvL3xWSSpb pPn4/4VbbE+LDk2GcA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from localhost.fritz.box ([82.135.81.92]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MjjCL-1t23mp1W0p-00qSBz; Fri, 21 Feb 2025 22:52:52 +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 , Thomas Gleixner , Artem Chernyshev , Nam Cao Subject: [PATCH net-next v6 6/8] net: pktgen: fix mpls reset parsing Date: Fri, 21 Feb 2025 22:52:44 +0100 Message-ID: <20250221215246.383373-7-ps.report@gmx.net> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250221215246.383373-1-ps.report@gmx.net> References: <20250221215246.383373-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:XCPdRkYaXrxHVQCYuZroPgUyVu/nBy1PlfUO+RagSKzue6EGDh7 9a1Jv6eGKwNWYW1zNyRtQfBa0Ttf8fqDql7kvE78cb8UIqEnoo+GrfBfOZfb7sibNNIsp0Z 2vivF5GhMhHyIlC0M6dbbLyF7kbT0Hh8eZnCcvkf/CR+VVU2QW/7PQ4D8yUNdhUle3tT0Q+ TLxVsVZXCl2bBpKqXMuyQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:3BS/0PHFWLo=;QpWdXmmbMNa+DayRbtScybxB2Mg 5w3tmXepl3PdJuTrlQZedwb99MKBiZJqseK62zCy/1A8JoP85ob2F229Hsg1sfecwI5sKszbW dplUUcKZ1UgryZon0y4LaWGhjPOZsWhl+kY2tt3RGr2tBpSQLKvV3XZwZ+NK9vG49iyuMMPSu rhj2YYRKorX4943ZtivWQKMx/CCBP4wtOOyb9v7nGwdwZoX0Vx1yYEQJnPt9dH37wdE+mzTSA QEGAAx4ssnLf/Q3DB/NTHWTH/+8G9DqvSoDrsW84JI/SGpXqP9FlqPAg2XPIBMaKwpYN+TCXw GjGwOeuVb2JXZ8DbUViIhENI0uf7dFKfTAwF32Fn3ehviqvcPwLjnFtGJFQIqmF5N44OoC9v4 KeYE2NQtYOFx7nYfSSwBfxzfavuawHoIptbR8+T4i4zZvSbjhSx8nGkH45zXxATmGfm7Xl80W +hvvSCAtZkiuwjdLjHkPLXJpDGzHjszkOx2Q+nwRzF7PI9YDwkg3dxfw8OQy2Z/4uWaFTeiIV fRaJc1i6SzI2gDui9mdtTYJAE0g2gRzZodbIuh4maeAeIVbOLsI0Adz7H2kI26yoXNu354GKN XRDWTbK1M/Y1A+WMrmyiM4ts2k8UGQc1QV4TNdWUX8vX33QM8R8c3K3B+7nw99iCbvRBuvcmL aFse7hA2vJw63YnHNEyvSnYkZTPMdBgIqkf8oXBI5u66/EN1wATtmyoiFsPtZfQqpQo8PgY70 LHYLKMbP/l2eNmwABTJiYXBGkKJszIyLXfVeD9IWTuvnRNoMCWjXAXa/6Cus1vQgAmjTTjgnW E/iMSoKimm5XzKE4s8K9BjTTn20u/8F+YGQ+wFhNDV6CptAJyM7mioXTYWW2Oh9d5wC0JwFwc WUtmVNVYvh5qVH2Yu3AM/t6xsxhRGZJGXHCFIdtiy93Q1Kp6FMi7Li0Cn41Ruiu1UI0953I9z uAqBiYsrPhLc9wVG7XiPYhewm14Rhzy0dLkD5K4q/BOBD2u5t7Jw8i2abtaMJEwP90kf2fgku rZjdidu8kuXPUAt/ltg+AzsaITb8GL64kTmz+bkkrC7GNya93gTZHVE9Q971HNgleFHwOEVsE 0Ctz3/UD75mWZrx0bLDcXn4AkrbW8+KLbzG7ZWWSByT8rolW6GWCkc5dNusUfGDL6PjHWBotO pmT5yAX+byCV27jTFxy8dieulmwu0x6wXko81kWe8lSFsaRPiYBmyKIDTBm0blPVQBawUg7vJ u6Zq2B/53xlcFRRB2yKOBDxxjESZk0D2Z/Amhf++0gqo1oKbFK5+UrA1n2D3quGMeL/5iPdVe Ewm2VofVPOG9MuWLWYT0eudRcLksjan+y6lqNiTzcnIuoVZWFQCd+ro/ahBfAkG6ylTltihWy gER9Va3exVHWukzusBVcWUaruEUPMgM3TeOVbYKJw9LDMcUZWQFLcKp9vO 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 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 ae5e81e62733..bb13a4591709 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -915,8 +915,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 and/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;