From patchwork Wed Feb 5 13:11:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Seiderer X-Patchwork-Id: 13961019 Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (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 E004E155744; Wed, 5 Feb 2025 13:12:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761131; cv=none; b=Z8FIp8+X3EHEob0+Kei91vsnJhgCCFl26aWrzAKJAta7f0FzOL3mPefbmxc6acdfXYdZouuyZHRJI7iR2QVgWBCkgA+9KzOcKEumJer2NhEwFxY8WV1G7Xm7Sh3zF2h8ku0OEQ+stUTotlnMtFaY302DTXKFRcaK4yN2WjHQsWQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761131; c=relaxed/simple; bh=7QZaHf/CYlNWEU18pei7TUReKsakGS4hi+m14IEnps8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=C7rotcElEA57a9e5xp0CyGn0bFO52dnCElMH+HwjO2kgMdTDdf39bNh24bfQ0TfJTYhoIfcNDBYPUj2FYgNCEsHn1cW3intvk1seCzOi7LyvvbLDDCj+Ty8a/tGLiLuBezVvw5bgTxUJZu8dvXdDh3zCIsO0yToZtwR0J9hqftw= 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=YidLCkgZ; arc=none smtp.client-ip=212.227.15.18 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="YidLCkgZ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1738761121; x=1739365921; i=ps.report@gmx.net; bh=7QZaHf/CYlNWEU18pei7TUReKsakGS4hi+m14IEnps8=; 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=YidLCkgZMCEObyQsY5UW4uJbEsgE+SGL3wyVoX/yiMrjJwZEK6xv/r11r3A3Wc5c CKxDe/VSA+3zY+QhPjDqvf8Tl6CCpfCbPU4YuktdU8n+CKwU61jfK0je+zqdR9SxI SZp3L1DRQTOTtdS1YXIcceH5uLX4QnferTQAh1b2xGgRsab7UsR7eve8HFKjk2aCK LicVt5usOw+FVwRO4LkLzDLgfoFpea6jBKnLz7lnbhQcXqj4Y4Nr+pe8hpiAuXgrq 2emIAnGAk1gExYPXv2o2beYQ4NwEkYWDfuxXqitDGaiaJiQYpT349oUlBeDacnMBB Gox+VduCazsoAAiaNw== 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 1M8QS2-1tk5330GeW-001aGw; Wed, 05 Feb 2025 14:12:01 +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 01/17] net: pktgen: replace ENOTSUPP with EOPNOTSUPP Date: Wed, 5 Feb 2025 14:11:37 +0100 Message-ID: <20250205131153.476278-2-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: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:IBhPBAOoqo99Y/75uYu459DKOWrK585/4s4eUkDuXn5MbymJS7Z hq2duso6O9jYw3QoVX4oy69dP47wUOEcJQY7SKFFHfw3Pfck6inRbenIt6JOsS/oq7jEGwm ZfMhYXaEJh1fCyz0ruqztukfkQf9UBg7ejYuRjfFiA6SfQ2fSlYxj6dbn7M8VIAVOjTa77w 4bmLAh6mCKlZ2C6jER73Q== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:MfsmF18LbUU=;Mvk3lVDu+duCQ/SH3nuszY2c7BL vJEYQGTy4Pmcz4G5Jlw2XyNjnVCQZWqfBOTlDC9CXosHVST7vNormg3mZyxy84e4qN6poj2Io YJECm4vTZvXfExchHKm/xEj5kJ2fnswR5XVRe6J1+d7oQxa+YyEOSBlcoTyTvtaOv2Beifh0O nHCzRxr1D+92W0A9WgP0AagoBelPb0Xlm1nWOJpPIt9JrcJaRU5E8cSyTG//lHUJFkX4Jxe3i QmARg5tiPPn5Tv57l3Gf7tSdb0qFwrebZnBfiTU/TJYKsmE0Qqx7lE4vg//6eyXRH59VhVKPy pmHDOdN0NYO0o01SRpMDinAtKH6lpYLC3zkq9jbydedMsP/dS30d4wXCP2ulp2ae5uw0ssBQV YPAf85ymvOPfWFrQ/kLEVT+CJZXB9xwWCtQNCJDtowgqokiXSqQp8p9Fj+M7HxRPGA10RY+2Q Fcv3HFhKqCZm42hotSF3skz5DzwvHWQ0k1KLHt9zNpo2fSZaPgJGc/OpXxN6xWFdPGkxSWXHn uA/Pv4nuHEtB4OVH/p8mJfAGoWTLId7ePSbkruMs8oEUtQc6d+RRkTNxuBhoUAdI8caouxPSg 2tL6w8/lotjiyjFuGojYYrONjYljN3RQppnvov+azlnsFAMiDpEGn65JhRegvNWF660DlvYiJ 0ZEb9+iTUTONIQW+3oBZ0v/JLWWY58C0TpV0QX+2/lGkiUtOl5CimQx7D68h/QIlE0HpmYAHu UbvL/2fKYd+drz/QKcvK5fA+iYOGdTLe/Nz+Ys7Rkv0LusfvyEImT/p+f0GuKAiMEtxNX9wab KfYnOyrTOYAM63w23zdWIt5/LTmR5YWtp7mUblwyYsvM94mIYaQZrWg3S1oLoFgH9Asbt1XAy QcHlZw/onH89eMBxjL0fMYHfFy0HYf8OXLkk5SWXX24UeFrxxVOQugIegUdSYajD4aAeTmreI qz4pppyP7s+QI+gkfiQLgHkLi8c3peiFloabEIIzExfzgHxcPdirI3uFe5txpZ1QbU2FDNsGF dUDwDjt6nDKdy0uiG1Is+AT119piJBqXsDl0uoeZxWRmV9ykt9VLK1HDDUYsI489v3rhb+1v/ 0BanrjYZ2eexTHkuLA//67hfHJK99A3RcKJh8wYu/ys3FGMAwFghxr/g2W83jabqW7feGM8l0 kQ4PZvz+QtChfOJ6JI7L6CVndX7g/Sx3qvVp8n5VCKwVHR3TntXIaPtsNM7QA/48sfGtTBdHT Ge+v6AEg9oU/0vjXyTkzm7xlvoBKzfToCjeX9c2xjIvdZC2+khzH9K+T02byLbu4jEkQpYgMW aOsXmiZNrkXL1g9xBX6PUncKPkfhA/dEv2n9jrMjt2+bs47sMrxe3gKAwnuvXB+rHHWkDeztD a8Ozf0hVsehYKLDnpUMpVrsB1LyuhmbWH/ckxaLfr9xJEBe4m0lpQyewHU Replace ENOTSUPP with EOPNOTSUPP, fixes checkpatch hint WARNING: ENOTSUPP is not a SUSV4 error code, prefer EOPNOTSUPP and e.g. $ echo "clone_skb 1" > /proc/net/pktgen/lo\@0 -bash: echo: write error: Unknown error 524 Signed-off-by: Peter Seiderer Reviewed-by: Simon Horman --- Changes v3 -> v4 - add rev-by Simon Horman Changes v2 -> v3 - no changes Changes v1 -> v2 - no changes --- net/core/pktgen.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/net/core/pktgen.c b/net/core/pktgen.c index 82b6a2c3c141..496aa16773e7 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -1198,7 +1198,7 @@ static ssize_t pktgen_if_write(struct file *file, if ((value > 0) && ((pkt_dev->xmit_mode == M_NETIF_RECEIVE) || !(pkt_dev->odev->priv_flags & IFF_TX_SKB_SHARING))) - return -ENOTSUPP; + return -EOPNOTSUPP; if (value > 0 && (pkt_dev->n_imix_entries > 0 || !(pkt_dev->flags & F_SHARED))) return -EINVAL; @@ -1258,7 +1258,7 @@ static ssize_t pktgen_if_write(struct file *file, ((pkt_dev->xmit_mode == M_QUEUE_XMIT) || ((pkt_dev->xmit_mode == M_START_XMIT) && (!(pkt_dev->odev->priv_flags & IFF_TX_SKB_SHARING))))) - return -ENOTSUPP; + return -EOPNOTSUPP; if (value > 1 && !(pkt_dev->flags & F_SHARED)) return -EINVAL; @@ -1303,7 +1303,7 @@ static ssize_t pktgen_if_write(struct file *file, } else if (strcmp(f, "netif_receive") == 0) { /* clone_skb set earlier, not supported in this mode */ if (pkt_dev->clone_skb > 0) - return -ENOTSUPP; + return -EOPNOTSUPP; pkt_dev->xmit_mode = M_NETIF_RECEIVE; From patchwork Wed Feb 5 13:11:38 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Seiderer X-Patchwork-Id: 13961013 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 64079195; Wed, 5 Feb 2025 13:12:02 +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=1738761125; cv=none; b=o4SQ/BYoPR7aCBOewDvkzxusBYN47rN7qwu8XjCh6pGR9MSUvbzGoB/uTlWGEDoEh75cSKlv8Hv66zGMmCP/l3gm5C48Op7xloFvWy2r42iv/xNH39Nqv49HHAtQy40H+sDBV5kDZ25U/jt65liaJ3a7Ot3JDPyoKjXmYIcftOQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761125; c=relaxed/simple; bh=TQmLPWR3TtQPrHPZJzINpdSovUG7XNvIayKaJVzgEtE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IRry7S0ZjTl3oVOm4SXBAdNuYp/8WX9XkqSpE8MO2LQARws4jamfsxVVeXIUoEanwIO1cpWezL/uHcISkd1sRyEUrOvAJP6NdH8/7BCzAkLSsrokce73THBOnOBaOM5wme7vzlcy3PCjxiu47qOuat7M5XCJPCzzq8ePMTAYzWc= 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=Q2v/3yWZ; 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="Q2v/3yWZ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1738761121; x=1739365921; i=ps.report@gmx.net; bh=TQmLPWR3TtQPrHPZJzINpdSovUG7XNvIayKaJVzgEtE=; 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=Q2v/3yWZl8FK1TO1XADf8nNhKcEEq8hPeyv2hKhcZH99yLb2nH+cbWtEaLUPDH2S 99KJmfKBf85D9aLTrV1HPy9IL0nep2zmsVYDiT/J/Am6r6UjtZTunibTZCio8IoWY I26ZMB1ZQZd6j7bkkikl4Hbb9jnRs2h3V/ZKqnKUIdsbT+8xMd0T+P8S1+78SIYxM pXMP1sv20oooihl7uDs+JRDWcNDipI0V41TmRRB1XnLEzq7djoMXb1JF7cNSepYJZ Wt6WCFdfY5IoYiLTCH8tUoD8qKaVWqg0dVs1wulOCkU//U3UU8yXieZRemJwDnMOn 2mOeEpxyXm6JUotjAg== 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 1McH5a-1t9uof1Rbo-00gApC; Wed, 05 Feb 2025 14:12:01 +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 02/17] net: pktgen: enable 'param=value' parsing Date: Wed, 5 Feb 2025 14:11:38 +0100 Message-ID: <20250205131153.476278-3-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: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:SdIEwppqEOqXW3lmk/nWVqop6vQkgpQ/Uje5XF7UyIq0ttSrqHc 5uiigrG8yxfpHIFIdhA9bSbOXAsqJ7glJIJVl024qCtwM6e3zQPmDinxbjxfH08/WJ3BpBU 6zF73NVLsYRFQvftsFELLkZwFr5wq68oq/9hL8Ay0vDwS7+ZlX89qmp4QhrodOxpiYBM+gp CeDezKS0QVCBjCjQ3063g== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:EUydzPO02o0=;CyGqAnDMlSW5RuFFPUWUNvXKFNE Rp/ArppiAHxrRZdiwhaEu/be4iRMFwRBL9EnqM5qK/4890lL6xHhFruOJpqhi0uXZx8PKDUj9 3x3osenOd6KJknMyIOVZLj5akA9YHaFbt3fpFlch1GAtLvEPN3+ENdDrFwzd3WGp2x0es6012 IyAjFOcYi/TSmPG7sNpcp6K1r9egTudhZqgW7xjQcmy9Bc8+AmHhzKGrxg/kM4dPHTLx6ANUy uBQ/FozljZPfL70Ffp47zk8XzkdQNbEdmVrOqrSUKn1Kt7zVpC49HssqsuVFh2HgvSanpbSoe sul6MsyxSoBIYnzO2y9jv7b1k62QkO6tMMW0CijkhO1Hn1/kMAwodmikXmSeAqMvX18ijtZSO x5Oj8lrtHvxLiILA112gaX0RiVdsFnpuFBLO+PK9doq2PqjRlO/ET4pCEL+TInGsmXeVipx5z aAx8I4JUHX4vfVqk6ZhV7iFPM3bo+L0rvHMf0F7OrAZTl2w89vcc/NUyX5l4lLH5MEekjuib8 yKWYqcTOhGEaiHqdixD6XL7MqlqsAlhIXo/zyGrZ8V/G5S4ez1qordpkqjmnTVNww8Wj8P8JK vRv1o23mGJePTOXybhKOUmlf+7he0OwHHUy6EFwte6qJ0mzrEqQBQf3u5OYHbpHEvBiDWdMqt z9QDj9IXMwX1pCXsWB3CbAH4T4fNSoGBDsGNDiVRBym7c7x8CdEgv+QZcwAAEkNLHr4gdkA0k xhVWGN3j1jww+C9b2c08st8792C0PWhuWvaEVHbn4zxTthQxRZ1WhMXhGoaF8BesApOxHCgLw +x3ub0GT8/+Lm+mhaNuiUbwVKn/LJkxjatCPmXCWeYjp0500WnpS0nuPVq//vuA8W2C7CeelW jW2ztD5ZqqEGeprzoudQlGHWt7rfmduxKNWXrDYyL0RUsYDhBkDP0YSyDbW1F3RTP4zoS7OFM YzvqpTBVTK9i35qp9rTwi6YY4gIIaLNy01cbpf82TzSMTh4gYeiWLrZBbkPCMgJRCFDu2OYp5 tZ9UKTxsG60gK1DhCPBJqHLs/poF62oewc0kNqMllQYf6lnDypszBxPV1QkAcOOhmq1ll7yeG mu3fUwflxM2T2l/F2X3ba0Hmk8tP6oUyV37Fde3YlWWK4fGyd4HTB+R+pSxXAmYigbh7n2S3I lE2ZBIXa6mxFcBHD7Sf1bzp/K4U+9AFUC2gWSAUoi8mGr3y2D9AXjzMTUjWqW3w+UK9EIebDY 4KQ7gfa3/I3EfX3sm2tSbjgfp361IdPxhWVWM1MLlkWqmdyB8EDLSU0ZhrdBUH29hvuTgrAGD anjafGNzMcfPqCpMDrLI5aLmrIouqRdQKnnVKZaBFS4btU= Enable more flexible parameters syntax, allowing 'param=value' in addition to the already supported 'param value' pattern (additional this gives the skipping '=' in count_trail_chars() a purpose). Tested with: $ echo "min_pkt_size 999" > /proc/net/pktgen/lo\@0 $ echo "min_pkt_size=999" > /proc/net/pktgen/lo\@0 $ echo "min_pkt_size =999" > /proc/net/pktgen/lo\@0 $ echo "min_pkt_size= 999" > /proc/net/pktgen/lo\@0 $ echo "min_pkt_size = 999" > /proc/net/pktgen/lo\@0 Signed-off-by: Peter Seiderer --- Changes v3 -> v4: - rephrase commit message (suggested by Paolo Abeni) Changes v2 -> v3: - no changes Changes v1 -> v2: - no changes --- net/core/pktgen.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/core/pktgen.c b/net/core/pktgen.c index 496aa16773e7..4f8ec6c9bed4 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -823,6 +823,7 @@ static int strn_len(const char __user * user_buffer, unsigned int maxlen) case '\r': case '\t': case ' ': + case '=': goto done_str; default: break; From patchwork Wed Feb 5 13:11:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Seiderer X-Patchwork-Id: 13961014 Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (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 916D1282FA; Wed, 5 Feb 2025 13:12:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761125; cv=none; b=JNDslZUzovoUC43wrhc2w1UW/2MMOuHQagUud6gYhnDUfXp+cXwCioXyYdUrQDGbFhUnu1zcJZmj99PBvRJ5akSmBjt/FGJz6zDvbqEdanS+ba86BXgCre7JZ03X7X5GDnk9+wMmNPbfaNGCLUuT7Mo2GFsW3UplRxJZq9Y6RBw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761125; c=relaxed/simple; bh=stM1/9AjdKijeAXGohpQ5QK37hC4Y9Dsyuw8pztVBdY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=krsp1AGzLlVPyen2iNZqs84LDpwpSY8XpR8bXRqeFN84lcDQJKzer06AnzCoGmqP/fXlkEnC9lj/KL9NKqLQRtYLgmfIQzzcX+Dedwj5tFNEnzkNp1wzMK0vudb7jIRKSjR83RUi+9u1Vhc2yRsa7L0n1hX7H1Ttb8zYUaS30x0= 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=F+821hWC; arc=none smtp.client-ip=212.227.15.18 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="F+821hWC" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1738761121; x=1739365921; i=ps.report@gmx.net; bh=stM1/9AjdKijeAXGohpQ5QK37hC4Y9Dsyuw8pztVBdY=; 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=F+821hWCj96ncGZVKge9ozOYia7SicXwX4hTxxaFVkcxzXUmxnhV9reW92nB9sks R8ulkcAxltxm0XZ13YNesK8KA+gtxf5WW7pvGEbpssJC9E3ZnVBa83uEwo8eaRmlK DX1A5WQzeGskqyPuNqpDTd7oRvPycSRuIsX6Au0ur3hAEBhijbrTacgUZ8hpbs/Dr N3i6GVpGj3yDskWIJcrtzZHgcX33csljnP43lJ4F35YzmOEQoRjOHcPl2ua7LZyBL crrF4tvLEOhY8JmdWDEHuVUqe/Hbr+WuAFd4eLLI/BoGbTYhbJk1MWm4nZoOEWgzX z4cCykctfumI71APdQ== 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 1M3UUy-1tf6xv2htK-006Y5Y; Wed, 05 Feb 2025 14:12:01 +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 03/17] net: pktgen: fix hex32_arg parsing for short reads Date: Wed, 5 Feb 2025 14:11:39 +0100 Message-ID: <20250205131153.476278-4-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: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:d7X7Px23WAQWipDRMSCjC7PcFAy9nU/diRro79SzNpoJt7TjYkQ j9Xz2MAcQa4WVlrejBxMd9cGAC6Vo9t973zkDR5woa8vAZP3V1Am7jeLu5SWczC5+X06ynL GPin3+0hHnsmTmMjbRbBJ+bIdTQMTfuTwJ4E/Q61puwHJWgRsz1a90IjHoxuO3hw0AG6iDA W5pDjECcSDXkLYRGnNDzw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:qhr2/ur4X6Q=;LRkCfqVH5Sdl7DThzSwHdKMV7bi 3c8NXaaKjFmgYd+veUfj4OMwY16r9p/TJjwCls8c58CSxkGlt4TqtGgZLISSQMeZT70mkkyi9 h/ys6WG/dA3TuYGpM1kP8RI9UyMazGQzw75O2iAt9yGO4FSZDWDLDM9j1qxFw+RSvZrOOmGkS HleHWuqYD62G9MCBLqF4HIsr3eI9AdeXQDq/DSSD7SfuWuokIZTdRrYFaC2CoAJcvCHYF/GGr GWmowfuqke0GvKRZzntZtCax4jEO9zLco8Alm1+uSfMZ/I7Bfixg+Z3TvLB6oQffK5LqUUDdM d5C2RmiZ1cTHSEYdweO7ni571EszyzOqNKWifGLNtGhxes7bwLEQCA8n+nz+0iiuLW5krlfBV gkE0m9MNn5Xxm04RqlCwadUqpp3eBu6B0BZrMG8BA4xK8WEAKNM4b6ztG5u77WZTnScvk01k8 GSmFncdANOFSTn+jh+hKLFsKVopGU/X7v4iaGv29L7oOMz0bREF2VZs6krZMJtoOKvkv9V3DG lFSr0n+kSCwBvpOydTKB63UmqsOfFdNM0C/IaFBJ4C1AkeVFQ6P6VQXoS8avtpjX775sv3gWD tvhDichvjeD5AP33fX9l3IVUNddlGIY6Nv+qrA9pA9ASigTU22vBHJr2+CZoVyZjhTAzmdu2l yDBiUGul1mVcL8l5M7m2wJYJpeY2tZui0KO/XCMOAylDxP/srmDAtXqsJxTA4fYfw8XppfZJG KKF9myXa7Emm3KDrlbMZCbLsRsvNU3qDvNHAR2Wq43gznL7piv8VEYw5Ut133RwGWBy3pNCE5 /MIuisD5SFSB7LdZtL7hRQjH435gnFT2OafWHGQD+4UAj5+HR5Dzcl7nYsJB8Can47ZVd99Dg smvxT+Xz6G222HS3QaPPcsPSwLkoenbm56tdKvo4+pD/6LJhVQSi6fxY1wq82SWw9wR7rD01V jOENcRznDtIilFfCCbAHRDpqE+zbkgCnatwPQ+NIjWgPhet3CeunGR97C7aUOx5MJnyuFhLYU fFn9R7HdkuJxIJZN/6zHgjz21TL4Vnvo9f2pm/cQDYFCyDe+9RABnUio7H60FScp+iHKW79vl YPgdusBnWU6qUb+XwGsFrXSJSY1etBH+wEFbaS4si2VXZo0r+Ju7L8hZc//9KG2Vumag/RMCQ 7UUNCbNWhGhUkjFuFd1LFwJlRv7nWTde52KflfQ5VKqgl/7fiSUMj72eJ0boG+4vqm6Y3Vd7L dWEU2TQeb1H3yP6AnVzieUEWSVIhcvu5FEi0nt4H9reQJHOID7Vn8rkRQewjNsC6Z2x+uHKMM /jZ3qrJly+S1praVcdGeoaRpfwYH/KsHdRm66SUto5UWrpMi2bWQ8UX4i5Uj5kPAB/cQKf+in NFqdPrHdBqfY637rCQJni2F9WsVjMg4Yt083DR1dFT5I2kLSrYZjoPOb7r Fix hex32_arg parsing for short reads (here 7 hex digits instead of the expected 8), shift result only on successful input parsing. - before the patch $ echo "mpls 0000123" > /proc/net/pktgen/lo\@0 $ grep mpls /proc/net/pktgen/lo\@0 mpls: 00001230 Result: OK: mpls=00001230 - with patch applied $ echo "mpls 0000123" > /proc/net/pktgen/lo\@0 $ grep mpls /proc/net/pktgen/lo\@0 mpls: 00000123 Result: OK: mpls=00000123 Signed-off-by: Peter Seiderer Reviewed-by: Simon Horman --- Changes v3 -> v4 - add rev-by Simon Horman Changes v2 -> v3: - no changes Changes v1 -> v2: - new patch --- net/core/pktgen.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/net/core/pktgen.c b/net/core/pktgen.c index 4f8ec6c9bed4..28dbbf70e142 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -753,14 +753,15 @@ static int hex32_arg(const char __user *user_buffer, unsigned long maxlen, for (; i < maxlen; i++) { int value; char c; - *num <<= 4; if (get_user(c, &user_buffer[i])) return -EFAULT; value = hex_to_bin(c); - if (value >= 0) + if (value >= 0) { + *num <<= 4; *num |= value; - else + } else { break; + } } return i; } From patchwork Wed Feb 5 13:11:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Seiderer X-Patchwork-Id: 13961015 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 D88774D8C8; Wed, 5 Feb 2025 13:12:03 +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=1738761125; cv=none; b=ESWgOFYz3fw1HWL/Laj1mfABw72I8wvDGk5QUC5VthCN0KQFXKsHUw+irIMiJJS73nHbmOaI48A4pLYYYoLHEIy2uwAeYYeWfLVJny4GClF4wyZpPE7zwYgQQKYr4+SUYHhmaTYbSY6kL6xj7M3PUojb+ubyTt1J5kXizgOip1E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761125; c=relaxed/simple; bh=m3aLIhLyvP29mQWbNEFuclTwYtEMnQZJ/T4J4oNy/b8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dAFDVPVvUUAZzaJ2PCVwft7Ay6djKyJ1H+VAVYo45W9mAkqphFfr/KIU38rEo1eYKUL5PGvJ6tW5XPSkkMen1CnpipHrEOLT1N7rRGblETk/CzEOdviCk/D68zy3uSAxkbmlrxKMo2KNAU4sW69WU39bcL+X9QB7kGuiXdTufCk= 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=kwR2v3na; 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="kwR2v3na" 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=m3aLIhLyvP29mQWbNEFuclTwYtEMnQZJ/T4J4oNy/b8=; 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=kwR2v3na9Pqe1L6DflmuPYiu3ezhBIiIVa1jksJNDVyxWiMViqvBIwqBYksTGQ5F 6Vsg03q+r+rRnPv5JEqt4n+Cr6G61U/YRJN35c/earnrGVfSltBWFEV7h3JhkVAh9 g2RV9u+zri9nVF/71tok08HeIgdQAIziRBN0dI9asWXrbLUos6sSNPY6oiNt1hgm+ FRBAPtvQ8p7SUWGde41FakzrvgLbZ+b1xXyDR2HnVZbbIjVVaYiY7hdN1RQecZNMu imJdJoMx598M8y+hGIjQwioKmr5g97RRD/lDLY//e8JIadqPxxxdHLbwmTIiBpWo3 Ff98T3auzTwcLlxNaA== 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 1MJmKh-1tz7tI3z1l-00PSot; 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 04/17] net: pktgen: fix 'rate 0' error handling (return -EINVAL) Date: Wed, 5 Feb 2025 14:11:40 +0100 Message-ID: <20250205131153.476278-5-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: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:Q7c5+6HKFiN6IID+pbOJ6Pa5dw1pyp1hIcEtn1H6jc6DAPddywa 2Sv868h86FJb89ePrOhoBLJiSLCgoVmP1Se/xvjmQzJcl2NbhzcwjP2ziJJbVZmMjmOwVeh SLK5bBdot/7X56YK3Bcs5UIl2z+rEvx6QF8099VVJOBR6wsUcol0+U48vTmJ4PzdKQOWaT4 HD5RXqtMOWCaXzlzkl1QA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:7voIi10w/Nk=;eSmYHELXZK+7Oa3u5LL6luq6iIU 5BO2GSfP70N2T0C7Dwv4lqY+AzkDLz6Bgz8eqiv0bkK1iRYQHsN2zAnVp94JP+9MoH2YxLUDV AyXz8ZP/2uO83ZOCLlPnMzOHQNKGwwz9Rxl8DGprzmi8xiF7kVnMVyqM167QDAoBWHLfx1r8r WvxjtMMObxtfwxt7JJROhFYGRiAnlDcgXATvRToEQwMLKuzt9CMBbevr6WKOUrcSmkntdt/pm eT0awe5VvvjWT4G8lXhuLc4Q0ZSwjZegjsyoRMxSm/y4hs4Ibyilw8b7NKomDTQyLirHUKxNR whxdVLHnzldDuo2TOI5c3AShWyr3g9a8IbdwToswfqLHSTCNUPVYDDNUNC19aj2db4znYr0aJ 3XZUVEe6O+Xsf7AzoKIMA4vuE6Gqj3/Sr3Ogdegi4hbGUAUYLIJes455YBaAW4FWhhzUMfWXh NnKbbIVAulLmOZuO7L1MPTzexITcYPYikm/K0ya+0tPMWvW7gdgPCy2fu2D/5XP4ROoEGcM6L KAvEe4GHt8IRh8yFI8sNLtpwukncmoPh4VTtfF3uMWox3qcAohbZoH8ME8/4+3n5cuywL3rwG E/gEUH6BwLv9YMVyPzn4V0F2n5yUWk8eIEHD9v58qYmNfYIRKfwF1DXUdjKvSJQXgHm/qYNPP sKYtmdh/joKPJM4qs3S6z40qq/ZHB1gxV4pJdnoRObZfmqIn38PHlAnWgEhaZ2/kl47L4UOCc Vk4FhMA4YcnWRQ4hhw8Fhmyqys+7bMWXv7wYUwY1F6V80pMNtGlOZj6rJjX2F2ozXQJ3xLfHM RRllkgq5dYkfhUbjkl011AppAcCdgBGvbCcXGnRRQbUw8QdqBchEeTnsHO51vlOTZQv2gWBm6 JyXq8nhR7SL5ipGo9HbdF+iX67QyD9lDe+rba5L2NqxK2ldp0ggmbsREuTtcY4iybjklfOZ9I JaeSDFSyOQudSDiP+Du/W5oxygIGVX4rnOJy8nYOLKHMj9xnoPjCV02WIgbkoeZ6OkZD0a9zh A3+mWW4zcgi35yX87/jSLGqvsheBqggqR1YsNRSVyhtMfpw/XUfQsX75HgVIv/+qRDxY1g7YG AAEqlytCFi7YL6Axha4vpjb8asgseyoOqp6vOWvaojSyzzIa7RszUoORXC0BrJQLmZRIv9NQD TdnqA2WY/ZYrJ7n+HFl3t5LtBkNi/FvxNjx+nWx0QloBUsSZbmjzZgesPdBGq03ia3n20hXIq ag14yYGE593mFxwqlNTmihVZ8c0mMVs4vRDR5/4zh+EzUhna4D8PeFi9rmH+D6cpZM74IUu6v aIEw9YAxmt7MQuj7OZUyKHK6N9HIoENfOuMEzbNz1UHPC0= Given an invalid 'rate' command e.g. 'rate 0' the return value is '1', leading to the following misleading output: - the good case $ echo "rate 100" > /proc/net/pktgen/lo\@0 $ grep "Result:" /proc/net/pktgen/lo\@0 Result: OK: rate=100 - the bad case (before the patch) $ echo "rate 0" > /proc/net/pktgen/lo\@0" -bash: echo: write error: Invalid argument $ grep "Result:" /proc/net/pktgen/lo\@0 Result: No such parameter "ate" - with patch applied $ echo "rate 0" > /proc/net/pktgen/lo\@0 -bash: echo: write error: Invalid argument $ grep "Result:" /proc/net/pktgen/lo\@0 Result: Idle Signed-off-by: Peter Seiderer Reviewed-by: Simon Horman --- Changes v3 -> v4 - add rev-by Simon Horman Changes v2 -> v3: - no changes Changes v1 -> v2: - new patch --- net/core/pktgen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/core/pktgen.c b/net/core/pktgen.c index 28dbbf70e142..75c7511bf492 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -1115,7 +1115,7 @@ static ssize_t pktgen_if_write(struct file *file, i += len; if (!value) - return len; + return -EINVAL; pkt_dev->delay = pkt_dev->min_pkt_size*8*NSEC_PER_USEC/value; if (debug) pr_info("Delay set at: %llu ns\n", pkt_dev->delay); From patchwork Wed Feb 5 13:11:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Seiderer X-Patchwork-Id: 13961027 Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (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 9AB8218A6C1; Wed, 5 Feb 2025 13:12:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761135; cv=none; b=bT7i7Xf755PTYkcyRgzCN1MF7uWmvPp+xqK9VkIvgg7YGDSeIvPW9MY1Oj5Oh2Gxxrm90N4j2T8m2TjLNZyWXIclHXbQMIGFzGbEoVgU13c5926pEck6W5cHU55C0dQG00v8Vwb+J1TX62taiHiFP48ms7lVa8jLradjTZMb+Qw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761135; c=relaxed/simple; bh=Zl69JU7TZOhUfHgNnJqZQy0D3V34iXH83rNPVu3yEio=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=V2tkOzHhyBUVFkWEwEmAYFMYCUwtZNNiG44FExFvkmDPpNJJUkKaMLMIjr84ITzioeSdyymEczgUdpqmcDZYpIH3VIkjoh7My9rNUhaqdZZ425IHLC/7oV2ZaRKLzx/Ssc/5zpP+Y9n7EwSlcU8kTH60rE6HofF0V1u6e/bpWmo= 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=f5A6tgug; arc=none smtp.client-ip=212.227.15.18 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="f5A6tgug" 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=Zl69JU7TZOhUfHgNnJqZQy0D3V34iXH83rNPVu3yEio=; 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=f5A6tgugLlpSh6EnJOKVpOWSuRTVmltNYsGqWOHt7V5KlE0P6IN5mDq2WVlBXH17 auTJiz7cyUCkQkSwyurWh9J8A6z0M97fArvYePdbu8ZTEafp9G9RcHVf1Z7y1llZl xoVAwq+IEa+TNEjVuR8BEYcRfaOjzSJYUz0JYiScWNcmJHRH39DVnbBEaUePjFrF6 9S4csEZ/4YdfkHj3VZ4JfFDuZl5R9rmrSxlA7pv1dMCHBd5d01PYnA9nyGgPIVkJb LcXHvbdIcfjGlmuNqcDh5jGDlsMwHvE0nEqir1ra/2hd0RrmL2uvTMJOCE9pmnRYU XEVZ+tjorW/JYbqKEw== 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 1N5VDE-1tLN9c0xXG-013lRA; 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 05/17] net: pktgen: fix 'ratep 0' error handling (return -EINVAL) Date: Wed, 5 Feb 2025 14:11:41 +0100 Message-ID: <20250205131153.476278-6-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: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:arhmFYAq+Wg8cqJbRE6Rk820ZGAY90sRZtCnUSyXHCbxh4NtUSa lnrJI3qw9VgolKWzWYytUugTbHlawV18LX6RTyOvXcLB6XGI+wFN3PoE+H7WvZZJFs9DLoF kjT04reOLcW9f7JyJj23ZlcPNBiGPCxFpmtapmuyQJQJr/NnoxmXEPw0Rzidgv0Pfo9q7A8 gqEkx4irkgRa/iZGAJFGA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:OGOqwqEQ6RE=;nnfr3pd5FHQNcqFJV0fX57A3sLE 6JkrO0kPquVNTIgpzxiD7Od+HMVjMG1nUWcGW6IA3h2V54YrMllPeaozY73emkscfKUbL6hYe D2r7eHEAFzkI9JawJeOP/N117ZX+hR2uaU22M68jR4eRVbNNaCG1FFMtUbNzRN450ysTI01Xp jsk4Ckl764psFtQGC2BJ+bFZHszrp68GQtyLu2+7z3NjBb7e7rZXDtGGXF7vrXhC0Rrf/prMC wNKCy61YJszBdtBivZhrP0x1Hq2Tx14LpuPfJlbylt6Y9SQKjGR1fRidhgxyfzMgD3ivgAqjp FPBU78qgyMlfbNP1aPSmURv4e+nWRu6VPx3vs7Es9xL4Pgwa3iq1nWWYTJvFqQUgZe7Ngb+Ai 2Ea8ODF0hbMbCfkqKfrNNpn66BnyBUb7e1Yvwxc3pOM4xiGXX5K374Y3LaZKCkPAkjHWsslvE Fk5RLtcf3yDhwmZLlrCMbcgkf+OvDePP8Adj1OEiottozdKEs9MaBpBlOsYAr+tKWHW7pIyqq I6IkzCG3F/aV2YfPT+g9+FmVCyupmH5OD9IBr2FO5qXhJ834Q1sS6bKlJppDsxFvLaLaFqFeW BfnW4auxgGA0Y1TjKcUcq5yW5ee7WEWmb/i5ux2+K4dZroVAyUrcH98doeCphd3nANau48DTl acRlcn+0RHQIdaCJZ0aEGkhHPXoPRTMkXXfPDYjv6Fqh+guuqj1onDesh0Rz+2WOqGUvi+PK6 NQFhgZstie+IPaMfLdi7e9RGY65jduUd79qhGms0j59yvUsb6+YEgTX7yL24+pr2PJ0aA5aLq +zmPyQxHLCEdYYVUyzSM9UMrYalI5KguiA+GMUHBI20I3xJFfmJgaDCT8t/gKPhdLDv5+6Zgf 6G7QKLj7u5FiGUG79INkMeEs1PW4DIOhWjWV20K8htz/RwH8i5FiV73mojuLuw/6gtrpPQb5c 7D522slR3PdsiuRykouEB54ofveqzGBJAmM7UjuVamMstUpapxqLyCAS3O+WfnrocrteMe4et Mh6bo/QRyzpcqaGxTFYSCRcX9HTgscD8mtlhc/b2f6NKqaRVoT4pVo+4DkPMsflzd4xovoeUu l972IkmbMs4Hj41QL4Vuw44R99cezl7mRe1M+AEb8VTSAg9AzpixNaKY+pMXzzFjbY9WeEGYK v1DV8YsIXvfrObNy0K+CK57ywVSd6uu5Ei+jBvCVgbxTF3bz6F+mwOGKDe57hVIozHlhj/+Bh iUrPPKAPWoohqi1g9b/VycFqrGFHBd+9WwEaNWS/LZ0AgFJ08keXntdERHWz0XNxMs7qp60zb vaAqFosfeydeOdot5Wn8XWPodrFkk4TNn2OkLvZxrLMhMOSIYp1lwkiYOsrpkBk1i29jQuhwK sCS3li3nowQBAixaDyxW0pfXGnN7HhbxFw1KwfLADPYHCQWeIPTq/B8VsJDdSzz3VV3X3dTei AVY/9zQ== Given an invalid 'ratep' command e.g. 'ratep 0' the return value is '1', leading to the following misleading output: - the good case $ echo "ratep 100" > /proc/net/pktgen/lo\@0 $ grep "Result:" /proc/net/pktgen/lo\@0 Result: OK: ratep=100 - the bad case (before the patch) $ echo "ratep 0" > /proc/net/pktgen/lo\@0" -bash: echo: write error: Invalid argument $ grep "Result:" /proc/net/pktgen/lo\@0 Result: No such parameter "atep" - with patch applied $ echo "ratep 0" > /proc/net/pktgen/lo\@0 -bash: echo: write error: Invalid argument $ grep "Result:" /proc/net/pktgen/lo\@0 Result: Idle Signed-off-by: Peter Seiderer Reviewed-by: Simon Horman --- Changes v3 -> v4 - add rev-by Simon Horman Changes v2 -> v3: - no changes Changes v1 -> v2: - new patch --- net/core/pktgen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/core/pktgen.c b/net/core/pktgen.c index 75c7511bf492..c8a5b4d17407 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -1130,7 +1130,7 @@ static ssize_t pktgen_if_write(struct file *file, i += len; if (!value) - return len; + return -EINVAL; pkt_dev->delay = NSEC_PER_SEC/value; if (debug) pr_info("Delay set at: %llu ns\n", pkt_dev->delay); 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: 13961017 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: linux-kselftest@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= 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); From patchwork Wed Feb 5 13:11:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Seiderer X-Patchwork-Id: 13961023 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 46C6115B122; Wed, 5 Feb 2025 13:12:10 +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=1738761133; cv=none; b=c/wTYKMx2Qf+q0u5jft5QxyXEsfcNOg98cnTdPOZmAbfeM5uaavU1BI32mBYILJeiYSxvsrhLbX9XqAf5qEUb7b6vQ67zj55FPHFPs9T0H0CWyDsFM7XO5OkBwZjcUyfpQM+f66QcEOLD68zs5CMmu3rMZw9Rl2EzKLy/V9WVwQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761133; c=relaxed/simple; bh=QRwX8UjSSKOhh5loLuyOOAnKngYgFCevybSUDASN4RQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fvTFWCcmmzmQmnfRWj0I/HDblyqTvsqMD99IZ/PRCmqVCVexJ4wujWaJZ1cfxZeqzrbZzN5gl/3p63AG1TDKKd5kX2r+5Ng1N9WFmWXTXbdKzSPWmIEdUuF8J0MB5EKBZKbVnFJ4Q0MyNh6EfeIaxbFl6DQ1kNIEs1F+N3lzjGE= 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=DUOtE6u2; 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="DUOtE6u2" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1738761123; x=1739365923; i=ps.report@gmx.net; bh=QRwX8UjSSKOhh5loLuyOOAnKngYgFCevybSUDASN4RQ=; 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=DUOtE6u21qmEr6DBDQv+klhR05btMZH/kZqfevF9VwVjsGn5jR7Dqj3fVhVsS5+R RtNBxiqEU9ZvqhSnpBEJFNUvTZ2qplJHLWIdHrM+HSpqCKOGy7RlD2aTUhiFPZjSd KihJnbtYiY8fQQRpUnn3lqxHIG0GbXkT1CBsL2ea+cJ6YoMwZKv1xMYj5iZRJsJdZ 6BaC7yaXQipxmnVmkvHR/A4TM/mmZ/eqifCh0CbyRVhpP13rTlP6fEuDjDU+ZkvUn ttBgjFHt/zhZvzhz+UZKsJAhPjMYKvMsd/q+vkbXPVBbb40s0VzzPhBa9taMVLcPe DeIvmnKvhKEvUsEBiQ== 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 1MhD2O-1tAT323JtC-00bBwG; 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 07/17] net: pktgen: fix access outside of user given buffer in pktgen_thread_write() Date: Wed, 5 Feb 2025 14:11:43 +0100 Message-ID: <20250205131153.476278-8-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: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:JpSFC3SX8/B8znaFp2o/iiUO/VkLN/DLJGqegSytyxONeqDDwpn eavPbTWoBz1LlCP9CXQrO20iIl5RLIyOKPg6WX2zDiw5fSzLv4ZnXetdIjM6twDLtYAXXU3 yjiLOu2Kzw0fVDGN/ekzEp1EPvXharE9QTrwRjkt8/9AablIv50IM4DfMJj6KErBVUocMw4 xYBoGKWHovneIHjSq2LVQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:xTifI/nrPBk=;UDz2fA7k86ngKEtw4RbxyMjtrI3 5luWsZ1TjGZxBj+VlMAgwiA/Qg6WC84Ta4N9OAbmdTQOfKhc4HVgl+j/NV/M744s1bzq9cbI1 QM7PMiNRbfpnqDaMWxRvIoPBg8H+Pdv8179+7U1LLDz0q+ynzsGFsEZGaLCkpgEpX0LzGx7cr Aq8/agPICCo8KtVYL5uPaFM8lpLUdXb+0PEK5u0IPz7ActGGZwf6epcIPJhzH2Ow55g3V5VMr cdN1XqAszN4mlYfnGliObY65yF+8qCOHhPp9Yu8zzU5E2yy8so1n0IPUBpXLT62z+qmg4Ou9Z P1wSMcKZc+BG/wLWJe9wlDFtwQBgEGxOnfUHipRNz+MQC0l35IAmbajav6wCqtJksa2/HuV4u qZ2I5ogopyxotpCkYeLaziLOY/8VeOlCRNYnLkfxCytENmln/UqxXd38m+zx7XZhs6II/CLOv ZVX7EUt9k0MeX45RAOhFb36wKowAKO6aRODBpQYQNAi10WdkIVRL4fqulRJJcyeMOghIIvYBa +Ws1l3n4ZRexOp3sjFft4zWlscMeqQ/nf/QC/extc/Lw2Mlrl4PKrL8amCQ07qmtKtO98uYSz n5B0NTs/NKyEyjgVkjB3pXM3ZSSWFlP2xWHiTTo8ggICar9Cl0EvvddFMG/gvKKYvWiB/jHf3 XdKeGgRoBimO5qwSeFiyKEfO6T4a/WI3yg4yfAzQmWdfL/cwS8cYG/7A6EIT+7fL1m+C2gp8k rAcCNzrMZwSDz0DJMQo7TZvVzNfV6WxtAj2GgMztdN0dnRz4drw69B3XALDCuZeUf5z9Gs2Ze 9Teq9Wn9c6OCYuO0DotSZIvEqnA6VFPdv7yITG0/NJZQRIQq7ED9XEnRkCqRIqHbbv+1816aF 73QtKIWs8Lk4s9m6wYSvSV2lOJUASSIOURqx9CKO6sS88ICoqjeoRHAqjOt6TFqF01UusXmSC /3EmXy2v5D1Nau4dAuNoQQ78rfCCDHg/se5WyhPqCncLbqJyLzBf2lhji6gfNvJ7rrSoRytnL 7ierGsxEAc6ovyFP4qJptqjcqO4DKHQZXESptx2ry9rUe7WJmSWKLoJG4m7nIEiPHfg1uDnQc CCRbnyyTyKco+BAfRa1fbJdm6H1zXw4yVQ6k7EdrTSNxyp1kVEf2AstR5uPcf37TQ2CrZ6VVv RQg7S7bxPQvSVEHC0m0KNYNVbvrd2dqiIfn033CUSCOtVfVUMbuTgjeI1R+lIoXTYY/lod6yQ PBEZP+w9MkFo24/4CYFiFttTPhlGJkegCP2kc6uCJF44ib9sonvrVI24DrC6OSs3s7cGyF4BG /x+ktcPz/esctENHyKY3IpPmM+l/iC2wbwA2NkMbgdHoEc= Honour the user given buffer size for the strn_len() calls (otherwise strn_len() will access memory outside of the user given buffer). Signed-off-by: Peter Seiderer Reviewed-by: Simon Horman --- Changes v3 -> v4 - add rev-by Simon Horman Changes v2 -> v3: - no changes Changes v1 -> v2: - no changes --- net/core/pktgen.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/net/core/pktgen.c b/net/core/pktgen.c index f6e35ba035c7..55064713223e 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -1900,8 +1900,8 @@ static ssize_t pktgen_thread_write(struct file *file, i = len; /* Read variable name */ - - len = strn_len(&user_buffer[i], sizeof(name) - 1); + max = min(sizeof(name) - 1, count - i); + len = strn_len(&user_buffer[i], max); if (len < 0) return len; @@ -1931,7 +1931,8 @@ static ssize_t pktgen_thread_write(struct file *file, if (!strcmp(name, "add_device")) { char f[32]; memset(f, 0, 32); - len = strn_len(&user_buffer[i], sizeof(f) - 1); + max = min(sizeof(f) - 1, count - i); + len = strn_len(&user_buffer[i], max); if (len < 0) { ret = len; goto out; From patchwork Wed Feb 5 13:11: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: 13961025 Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (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 9AD3715CD74; Wed, 5 Feb 2025 13:12:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761134; cv=none; b=ODtEGpaKvlGdJUH3CyMu6Bh4SUkBG1KLTo+7znPR315nY5fOP+Y/t2cbld8q8uqHZgtGx0129eY9+IYgdyO2VFxpZA7DwRCDzGtUb2C3skn7yMwc8ORUUsIzYgVjogcldDoRAG0iciAoDfia3fa7ZHLIODC/6INqEIBLDjy6PS4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761134; c=relaxed/simple; bh=rWyNI/q6myeqPgp/xPCT3DlfzZA8avj6te/QT8pE6/s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=n1Lv52une8ik+ZwMSmQ+QqOltxZWgozWi1foOI/UhKZ9+FqLjpzU22qrVKB3XtgwBlvxuEhPb/Cs3y9I/FqEdY7umV2ARq/gswaI5zxepPbuq8ss6DlcEROnzZe4nah7JAYI34/TnT2jJhbHogIsPmfD3OY35x5dpwUJ8o88yjY= 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=p/rY5E/q; arc=none smtp.client-ip=212.227.15.18 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="p/rY5E/q" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1738761123; x=1739365923; i=ps.report@gmx.net; bh=rWyNI/q6myeqPgp/xPCT3DlfzZA8avj6te/QT8pE6/s=; 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=p/rY5E/qk119SD5uvjTcRDEHnQIiwXjOz6xp5Uoy4l9ZhEQtdRgU7ZIcYsQa63P0 ir2fH44HH/UjxsyX2e8xRv6Z5yuONWGcSa+7Dw/w3qCTfIBwDdAMk4IHb3dBpZ+8Y yc6BF8C7yhBDSJBfJyh6VUWzDGGwvpZM9K6Pjli3ypEGObE0PA0VkO0srVhgDZ0uN J11LEIZiQWFnJsVRF4vIZxgcBmNlACk+4YRVnBm7+r9o37PBfcru/lIBWrSr/2df3 eRmhlqPTDhOe9yZ0uwS27R/r63pN7yHDHnDoWulraqwMd4uLdLt8018r5ns95CtRs IsPHsHUMCAtq5Au+yA== 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 1MKsnP-1u0EM20G4L-00OMtL; Wed, 05 Feb 2025 14:12:03 +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 08/17] net: pktgen: use defines for the various dec/hex number parsing digits lengths Date: Wed, 5 Feb 2025 14:11:44 +0100 Message-ID: <20250205131153.476278-9-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: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:adjaxnHaCXMBHyes901iCunZWew8POIYQFIJzO957iZWxfR2pOx xNaGw0LewBKzU5EUzxiXuNfc3zPY+I8TLoOoCAlfU9nmFhW3q3RAqdVkqB/M6v/sR7RzGnr qsMXfFkEk4XVYPHcXpcRN4liswua4AlyeelyNKMZXFtWp5NjBMHN5veiqB0YFgBYkG/ejHI SZfHCBQVc5+/FBdmzkvSA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:64VSHwJEwPU=;oDD4HcXihkZ7u5tG4AiXVooeQH1 yBcICgavgC23A++uQs7ZTh2VgnQZoc/iC37p2NotrgaE7iNDbq4HrstfO83GYOT5RDRMozxTX xuB+iQSEgEqH/7UnsDoIdtVFmFBJqTCkuDCoq7MObIg6IDpoLS1AVLVH+JEg2g/8rdimE87gw mnA1IiZjRM7gk7IeFFEvxAihPQ/vWFNOLbjoJhKxpzbHWPF415qFmIrPSrKRVvaYbZV11HmOk HfQ41ZMUdFBAA3mlMg/SDQukcLM1r2FgE1Osd+u2rGg5Urk/JIBo3QibEPBNgbaEp5hXYfupX r0xBF9IUUUc75DTGaEesNiytYHDOHPEZthRGQ42IYipM3u+iNzD+/88HfiJkNncUISn4gYo0Q Y7JD4Lyly4+pkrXuZB73H5VDkVJmwnXItsg1iSBYM0aprNatZLmwEQ5zosYuj/rNEOoteSNHZ j1bnWfXUSQgZlqRugV0dwsMincodDYm2dYBtA8Sbrq8fQbdqUc/kqWYtwObSwtWcBQO2mbQMP DrYnmLi4yqfAezBSn4oODD/Dwx07akgYP7FK8oS+o1ZV/UaIlWdbDn7KSaNSYrsk3mgfGS8Qg bchdJCD64cVd+Tw8H2Wv7T6P+KvaDNJTtWagMSJrPYkmnLidWESPd+J3PX+/tn7U/FL1hn598 XydixADL2+LZ7FbJzAMCL/lxSKubHO4MdJ0c5nU2oiY2kVXZZCWsRCRjCHHunfXaTkoRgUnSn phX8Vov9HWiq+lRtFr0GygaWawpD+zxEkidGiAo6uFW1Ln+vgh4bELSiVC8BT5ft58uO/cvzy 8GIModBiK9dYp5HL5Tez+wrx5agEu99l4EoS3Qb/MYF9i35MJd4rns3a7pLvcatvCgJzy6ECT 0KlINAHh9oZrYnZAbqgP0B1/NWT8zakhI1UAz1KZpQYEJy4gDtp1bxqZDOw/1dZJBFaXDWVHg yfEYs5CTQU7O5n3EAwoo2EfxFOVvfePZjFuRud8ev4hsaeonuhcMDjQwslE4+LvscHQ1a/ovk d77QGnwAYRYeUnivpl1GNlxIzkQZ2T5Cwcb2cylQXoA0jkZQiLq2X5tnoyA4mgFqi5pZfqnXj /o2Gf2cfViZDjcUu6U1Tebbo9PSlIe4blYat/GOIa4gzmKbc5iI/4n7x5EZeE+Hn1iwOSVbDG xMb6NWS6mVT/T9w94ptVfsV17vWxsWte3msJp3f/5kJMHXWz+7GfC4f/KRnaM6OPNV3pbQRNA 5MQdqowpXpuGifv0Vl7pF73q2BzOFpzeLW3N3kMlDC/hyQ95pS8tdtj8mhBMAFlNwT1xDlPZL 3+2YhpC5t6bkLuE8JhKgi6V6nDbQzfIk9xAjU9UErYx10HLAMs6RxJ2xPf+8Dyat0dNNxSs+f zd60oAQDMIZFV6JL5XCgedgImQY8BroXmDBcMHh8LAJzxHNV1ZnN+3Kzyb Use defines for the various dec/hex number parsing digits lengths (hex32_arg/num_arg calls). Signed-off-by: Peter Seiderer --- Changes v3 -> v4 - new patch (suggested by Simon Horman) --- net/core/pktgen.c | 80 ++++++++++++++++++++++++++--------------------- 1 file changed, 44 insertions(+), 36 deletions(-) diff --git a/net/core/pktgen.c b/net/core/pktgen.c index 55064713223e..4f201a2db2dc 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -179,6 +179,15 @@ #define MAX_IMIX_ENTRIES 20 #define IMIX_PRECISION 100 /* Precision of IMIX distribution */ +#define DEC_1_DIGITS 1 +#define DEC_4_DIGITS 4 +#define DEC_5_DIGITS 5 +#define DEC_9_DIGITS 9 +#define DEC_10_DIGITS 10 + +#define HEX_2_DIGITS 2 +#define HEX_8_DIGITS 8 + #define func_enter() pr_debug("entering %s\n", __func__); #define PKT_FLAGS \ @@ -844,7 +853,6 @@ static int strn_len(const char __user * user_buffer, unsigned int maxlen) static ssize_t get_imix_entries(const char __user *buffer, struct pktgen_dev *pkt_dev) { - const int max_digits = 10; int i = 0; long len; char c; @@ -858,7 +866,7 @@ static ssize_t get_imix_entries(const char __user *buffer, if (pkt_dev->n_imix_entries >= MAX_IMIX_ENTRIES) return -E2BIG; - len = num_arg(&buffer[i], max_digits, &size); + len = num_arg(&buffer[i], DEC_10_DIGITS, &size); if (len < 0) return len; i += len; @@ -872,7 +880,7 @@ static ssize_t get_imix_entries(const char __user *buffer, if (size < 14 + 20 + 8) size = 14 + 20 + 8; - len = num_arg(&buffer[i], max_digits, &weight); + len = num_arg(&buffer[i], DEC_10_DIGITS, &weight); if (len < 0) return len; if (weight <= 0) @@ -902,7 +910,7 @@ static ssize_t get_labels(const char __user *buffer, struct pktgen_dev *pkt_dev) pkt_dev->nr_labels = 0; do { __u32 tmp; - len = hex32_arg(&buffer[i], 8, &tmp); + len = hex32_arg(&buffer[i], HEX_8_DIGITS, &tmp); if (len <= 0) return len; pkt_dev->labels[n] = htonl(tmp); @@ -1008,7 +1016,7 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "min_pkt_size")) { - len = num_arg(&user_buffer[i], 10, &value); + len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); if (len < 0) return len; @@ -1025,7 +1033,7 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "max_pkt_size")) { - len = num_arg(&user_buffer[i], 10, &value); + len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); if (len < 0) return len; @@ -1044,7 +1052,7 @@ static ssize_t pktgen_if_write(struct file *file, /* Shortcut for min = max */ if (!strcmp(name, "pkt_size")) { - len = num_arg(&user_buffer[i], 10, &value); + len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); if (len < 0) return len; @@ -1075,7 +1083,7 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "debug")) { - len = num_arg(&user_buffer[i], 10, &value); + len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); if (len < 0) return len; @@ -1086,7 +1094,7 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "frags")) { - len = num_arg(&user_buffer[i], 10, &value); + len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); if (len < 0) return len; @@ -1096,7 +1104,7 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "delay")) { - len = num_arg(&user_buffer[i], 10, &value); + len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); if (len < 0) return len; @@ -1111,7 +1119,7 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "rate")) { - len = num_arg(&user_buffer[i], 10, &value); + len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); if (len < 0) return len; @@ -1126,7 +1134,7 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "ratep")) { - len = num_arg(&user_buffer[i], 10, &value); + len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); if (len < 0) return len; @@ -1141,7 +1149,7 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "udp_src_min")) { - len = num_arg(&user_buffer[i], 10, &value); + len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); if (len < 0) return len; @@ -1154,7 +1162,7 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "udp_dst_min")) { - len = num_arg(&user_buffer[i], 10, &value); + len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); if (len < 0) return len; @@ -1167,7 +1175,7 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "udp_src_max")) { - len = num_arg(&user_buffer[i], 10, &value); + len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); if (len < 0) return len; @@ -1180,7 +1188,7 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "udp_dst_max")) { - len = num_arg(&user_buffer[i], 10, &value); + len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); if (len < 0) return len; @@ -1193,7 +1201,7 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "clone_skb")) { - len = num_arg(&user_buffer[i], 10, &value); + len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); if (len < 0) return len; /* clone_skb is not supported for netif_receive xmit_mode and @@ -1214,7 +1222,7 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "count")) { - len = num_arg(&user_buffer[i], 10, &value); + len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); if (len < 0) return len; @@ -1225,7 +1233,7 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "src_mac_count")) { - len = num_arg(&user_buffer[i], 10, &value); + len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); if (len < 0) return len; @@ -1239,7 +1247,7 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "dst_mac_count")) { - len = num_arg(&user_buffer[i], 10, &value); + len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); if (len < 0) return len; @@ -1253,7 +1261,7 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "burst")) { - len = num_arg(&user_buffer[i], 10, &value); + len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); if (len < 0) return len; @@ -1272,7 +1280,7 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "node")) { - len = num_arg(&user_buffer[i], 10, &value); + len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); if (len < 0) return len; @@ -1592,7 +1600,7 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "flows")) { - len = num_arg(&user_buffer[i], 10, &value); + len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); if (len < 0) return len; @@ -1606,7 +1614,7 @@ static ssize_t pktgen_if_write(struct file *file, } #ifdef CONFIG_XFRM if (!strcmp(name, "spi")) { - len = num_arg(&user_buffer[i], 10, &value); + len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); if (len < 0) return len; @@ -1617,7 +1625,7 @@ static ssize_t pktgen_if_write(struct file *file, } #endif if (!strcmp(name, "flowlen")) { - len = num_arg(&user_buffer[i], 10, &value); + len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); if (len < 0) return len; @@ -1628,7 +1636,7 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "queue_map_min")) { - len = num_arg(&user_buffer[i], 5, &value); + len = num_arg(&user_buffer[i], DEC_5_DIGITS, &value); if (len < 0) return len; @@ -1639,7 +1647,7 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "queue_map_max")) { - len = num_arg(&user_buffer[i], 5, &value); + len = num_arg(&user_buffer[i], DEC_5_DIGITS, &value); if (len < 0) return len; @@ -1673,7 +1681,7 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "vlan_id")) { - len = num_arg(&user_buffer[i], 4, &value); + len = num_arg(&user_buffer[i], DEC_4_DIGITS, &value); if (len < 0) return len; @@ -1700,7 +1708,7 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "vlan_p")) { - len = num_arg(&user_buffer[i], 1, &value); + len = num_arg(&user_buffer[i], DEC_1_DIGITS, &value); if (len < 0) return len; @@ -1715,7 +1723,7 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "vlan_cfi")) { - len = num_arg(&user_buffer[i], 1, &value); + len = num_arg(&user_buffer[i], DEC_1_DIGITS, &value); if (len < 0) return len; @@ -1730,7 +1738,7 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "svlan_id")) { - len = num_arg(&user_buffer[i], 4, &value); + len = num_arg(&user_buffer[i], DEC_4_DIGITS, &value); if (len < 0) return len; @@ -1757,7 +1765,7 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "svlan_p")) { - len = num_arg(&user_buffer[i], 1, &value); + len = num_arg(&user_buffer[i], DEC_1_DIGITS, &value); if (len < 0) return len; @@ -1772,7 +1780,7 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "svlan_cfi")) { - len = num_arg(&user_buffer[i], 1, &value); + len = num_arg(&user_buffer[i], DEC_1_DIGITS, &value); if (len < 0) return len; @@ -1788,7 +1796,7 @@ static ssize_t pktgen_if_write(struct file *file, if (!strcmp(name, "tos")) { __u32 tmp_value = 0; - len = hex32_arg(&user_buffer[i], 2, &tmp_value); + len = hex32_arg(&user_buffer[i], HEX_2_DIGITS, &tmp_value); if (len < 0) return len; @@ -1804,7 +1812,7 @@ static ssize_t pktgen_if_write(struct file *file, if (!strcmp(name, "traffic_class")) { __u32 tmp_value = 0; - len = hex32_arg(&user_buffer[i], 2, &tmp_value); + len = hex32_arg(&user_buffer[i], HEX_2_DIGITS, &tmp_value); if (len < 0) return len; @@ -1819,7 +1827,7 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "skb_priority")) { - len = num_arg(&user_buffer[i], 9, &value); + len = num_arg(&user_buffer[i], DEC_9_DIGITS, &value); if (len < 0) return len; From patchwork Wed Feb 5 13:11:45 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Seiderer X-Patchwork-Id: 13961026 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 4D4B418950A; Wed, 5 Feb 2025 13:12:12 +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=1738761135; cv=none; b=NhbF3wBit82lwBlUGDrm9Jp5r3uZgZPfRRkZa2Ax0eTfB8IWZODoIOHYRzts0GEjbrjAuyxhcRfVU3YY+KE66pEzBDuQJpc8u4sBjpnWlPdaF9tb8ZyYpnbZlIgbgMdArYnnaQP4sHPkh270tc7RQLbPGsj9uxxX6xziVsvbxE8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761135; c=relaxed/simple; bh=DfZwXemZ9uih4XCzdcvCsnG10zFKF5khlIfY0beDUtc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iJpwS6/7ysj/jn8uvj1NI+hOSGfPRAdM4im6PLa0I0s7KepueZG4vUfa2gM+DQMz62EM5ABfztyhKVZn105yENqdwH6p882W68DfbvP+GERa1BL1GNdek55UYbgj581SksDX04e+Q+pmhH/Y4EaU9AdkFUwhM9EJPUcDpbwJ7to= 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=bqMgTZAH; 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="bqMgTZAH" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1738761123; x=1739365923; i=ps.report@gmx.net; bh=DfZwXemZ9uih4XCzdcvCsnG10zFKF5khlIfY0beDUtc=; 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=bqMgTZAHsieG7C/RlOG9G3q3hxRqBJsW6Z/isuwgwM+24aJ9eJQH/ziijaYTNkhd Bl8njn6DXbc5ZGhey93Ux/yI5GKD7yUS83fqBKjm2Iom9qUxxKjlVAH82DWwpXuNl gEIlRDTZYSnpkSzoJ+WKL1dn6KOcicakblhFu60npIbIl33mYGIMqOHEGrjw+s/xq 3JKkWE+Kef8ZoYcBgUNnVOMEAGkIa+Z7XEL71DVBlHpJS4iBTaka2CB/nvAvN1urc VQtKgLrs6p8yaSS5/SUfTBu1hhF6EvqMrlrJruJZSJjgQ28dwh3p3rirFH5HfBFLD FV7zzrJ3GTqEF4JmYQ== 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 1N1fis-1tHVX91SdE-017dKE; Wed, 05 Feb 2025 14:12:03 +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 09/17] net: pktgen: align some variable declarations to the most common pattern Date: Wed, 5 Feb 2025 14:11:45 +0100 Message-ID: <20250205131153.476278-10-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: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:cVVKwbgSW1U4qdylOaxjJsN1FjtiCYxTGSxsdCVoOHLIkGdXSNk xjehj+K+aQJw0ahWfvk2qQgkhYwOmYeblSwAfUAEKMX7l6xWzn8Hu9dhLwNcV5BYPea2T/n C1TVpqdaZ3CHXQmbK4AKg3V0d55nprNIgO5lsLKDFUJ3UnkStzMvy4iv3ekuKvHQ27Bw3SG TYBdYR/5cXf7rTfaLG2ng== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:KxFaNSczZFk=;zCEAKfLiXdJ9LxIsrWZCX8R6PB0 0u0cBW8/L5NXTC49/VBzzif7dGLlxdvqVkm1Gf/3R20HV61PzUKvdtxU68b/GJW5NrXivCu2/ SEbgSaJWgl/ipWzBOliZDr1tlg4ODTO4CEhew1WXP/g0NvaDjARuiRlYvAKkMOlVCakiGjxXd Vad2AeqOxAlkJGLrzzIOsWJEYON7z8A+t2Vlv/z1PT3Ynl90HRhcHC47DDxoejeAO9uVw4T0o CoESgXhfrgAI8BMxcwbTuepkCdUCnh39utsyDCzt84+vxBw964L8jp4xBYiO3jChtFfu+2pUO qxYyp63ZtFTSK+D6S1E9QznD+tnXc1RneI3jBy0fqMTl27AMufFL8A64nVbh0fRLE7ToCv/6B haDHmaDiPFm4sYAZJ9tSg55zsc5ifu6jc81dtlK0f7V/IDoOHymIGhgCeu39TzQdyRJviW95q ZU+8kWTNhndLkQjb9Oi7hzH2ZbffH5q+Mrq8Zp0LTkheNK8X4e1m+rIcTk9hK5+XUyAmcT965 SiHhrVc6uXq6jqiwLV53FvtcT+Unn5j5KWpOgK+IbCcGTsUJ36+QJlXZBJGYpGmxApTZO5+le CMNeDVt1MkuwgbgHahNGgX/pLDsDrsg9kDDlmO1saxg4yIQswCiEGnlM+J9Wz4RAv9rBrQtgo OdNLGEQoJaLNGn8yWKOu3FLHZC/MmLQL+rX6wxIpCh98DRkND1t1ISUrP3LY6qsBzKSFkwmlX ADNzlRUucac9MmssVdRHe9x746Y6CfPU+nomFOn2H+S+IPyZvznNO+N6D6FJWn8nhURFxTtDd krL0YI8/HxappEW/87Xwn72lMYrncuBwYeq+sK9sCmp+AS6b7F8IS1ZJsPQpoNpOm7Tamslfe oU2O8VJDfTUj3XNZ5gu5Crg3GbVq+XP/2LEZ83SOLjJs+9RDqNT1cBTQxjY6d1QEuIZ+5FTHa NKOWuvb8xyiyL3fbKawPhhR6gQ8X1nJ72/DHKS7r+06PK4RHJifsZIAMlxRUA4VbeJEUfTbmU 8YGZQQgI8S30AUNTDrWaD2AYgFuawzQG/g3px7OBZgZ64GPdYhfmcXA8B2JdgQUOY/fRB1mv+ IRSLEHeqg/QhU8Qo0v+1yu3w7bFV5GmZ0un5I9jmOc2rwOwI2+0C2DhlW+pVPyHkYdvwdXk/8 9rINhWBDiFhU0b+3KIHltP7Le2/HMlGzmts4ax3J8Yu70UQlyKkgvK1Ag+WNlwWo0+Z17R8uw 0wrmb5LwT0Wf5ocBlIWikrbgNV7+cEfrnsiogb3q878INVhwWH6nyli2QspIdxAu2soHVVQWg bC5oiXKL8ofu1D4wTwfjT/TszkQG89wX1u/zg9MHF4rY/k= Align some variable declarations (in get_imix_entries and get_labels) to the most common pattern (int instead of ssize_t/long) and adjust function return value accordingly. Signed-off-by: Peter Seiderer --- Changes v3 -> v4 - new patch (factored out of patch 'net: pktgen: fix access outside of user given buffer in pktgen_if_write()') --- net/core/pktgen.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/net/core/pktgen.c b/net/core/pktgen.c index 4f201a2db2dc..279910367ad4 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -850,12 +850,11 @@ static int strn_len(const char __user * user_buffer, unsigned int maxlen) * where each entry consists of size and weight delimited by commas. * "size1,weight_1 size2,weight_2 ... size_n,weight_n" for example. */ -static ssize_t get_imix_entries(const char __user *buffer, - struct pktgen_dev *pkt_dev) +static int get_imix_entries(const char __user *buffer, + struct pktgen_dev *pkt_dev) { - int i = 0; - long len; char c; + int i = 0, len; pkt_dev->n_imix_entries = 0; @@ -900,12 +899,11 @@ static ssize_t get_imix_entries(const char __user *buffer, return i; } -static ssize_t get_labels(const char __user *buffer, struct pktgen_dev *pkt_dev) +static int get_labels(const char __user *buffer, struct pktgen_dev *pkt_dev) { - unsigned int n = 0; char c; - ssize_t i = 0; - int len; + int i = 0, len; + unsigned int n = 0; pkt_dev->nr_labels = 0; do { From patchwork Wed Feb 5 13:11:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Seiderer X-Patchwork-Id: 13961018 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 72ED4146D57; 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=1738761129; cv=none; b=bI9Swh1jHYRCWXvgQoo1ZCgW++TgpzcWD2ZKtAgi0KLy3YLz8t0cOIjH9h7YzCdYvlBuWiX+JJW7G3Mq5vcyqmy/by9Hi4mzDRafGLvX5GjRcOoqH3oCdx0khV8WX2hKpQ86BlfNDQbDBESmLla0DFaXTQWROyKtuY6BMZfkta4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761129; c=relaxed/simple; bh=F47ANIYhyoXWV4unHnRxiU6I2QiEzt09oLu/8VsINmU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Q0WqGkn6kWNY+A32ZDXu4lOqHXNWQ7JCkA3bgYrzyB/wmfrkde0BJ9I9hTXO0JDobr8CE8qPkShZaIHNgKeUeBAzxGmP50TQFYlfzln4mzvTegoCoZ0i2hwY/IQLYuJ/OjmC7UqX0CY3yYYRUhNCRC+wSM32uMQkwnHjrYVsrsA= 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=ZHckROfl; 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="ZHckROfl" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1738761123; x=1739365923; i=ps.report@gmx.net; bh=F47ANIYhyoXWV4unHnRxiU6I2QiEzt09oLu/8VsINmU=; 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=ZHckROfluVDb9WlnZTEmwIRUIirzsJA8kMZhaepi/z5Ukrg0tirPdCZBbMwybeti reGK1s9FNN4W+ONLLUM0yF7q4mtW20b2esbqy/LHbDwz9bQOsrk236rkmzIIMOoap ZOJfYMDrObiBh8VeKavXe57wcclmSuHs8A7+U7WvLuuzn89I0J07ytUfbEgAQF4u7 yV7BrayxwwLypqm/7eUHIve9QYDDOEzLekw4kIkr0GCSZYzK4S/ErFf5d16ODHZQP MEyAZ07ixLCeTUnU9YDMx1VvkbnQ2nKGJs+mjER1t5pFAJBnTGT6sUQN2GyrKYkLC HUR8AH0unB13XhD4RQ== 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 1MfYLa-1tDECp2gjQ-00cqtu; Wed, 05 Feb 2025 14:12:03 +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 10/17] net: pktgen: remove extra tmp variable (re-use len instead) Date: Wed, 5 Feb 2025 14:11:46 +0100 Message-ID: <20250205131153.476278-11-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: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:Jt+b+gD7lYNc5LUFBg9Q64lLcVzkdnCcxE/WtLwIaEHCx6Xx4Qq McYibjWL1mt3S51bxkba9puN8jSFg409PGO01kZzaukuHh1ONqOwnCqy8bcpWTj/4U+B0Yo D4c0yb1LPmzINGM5OGfIcwT0FfKWKAeYTEvLehAGg/w5b1ezdI3Np4YvXhPWSQpHCI02eo2 9vRziRM49GqoUMF+1Eyqg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:/ffpwATl7uA=;DhJAjFIxSFcyNdvY5FAMtCIbWVd v7BOh8T/mOZIQugGNxrQPGZ46zomUC3Sd9QtdG6gtJ7zCdVai2RNvu5KtwiqIzZKgYJfTPaY4 h6xZY0aIgFLaObmCHvg8JqL5QYh69tLMaCJtx7j/wkcQ2Wx56ou75UiVLT4xhaxNT75eGkfUo WwCzQblr4v5TMQatd5a4OdgIBYaO+k+QSejDZytKBlOiDN+cXcWYV5zLxu7JW2lxWboq0KPiS ZiaF+wbX8S87f22qSL0Mb40CUz8hrOtRC2UXEu6RG1hjTKRKSqkdi0Z941MH6oDuOIjBMIDS5 Gzk+eruFAzxUtuQ6hCHh/axQJhymfCyt0H8PWLjBjspbdKAPH5JUj8iuglHVaxW5KQmVZ3idI 2zx/WW742QRuqAKatGdfEW9gAE23Rio8+sH8gV97/+6pva8EByqM8ZM1RDDJGkIP9qRCXzbvO qurWhkFd59YtNXiWo7iBk093a7Vd/1tQCENgeZGa0uCMIwcsdq7Zzm8e6mnD9DiTKNswBoMoi 69J4S4t8i4+AE4NFIJ36xRjw0gNMsOtE/OG1ETR4pcuMNxiMkLHWt8TkXL6dmaximguN5jSL4 3Kya79BBzAL5amtwWCUdnZ2w2K/OPafwLFTeeLm/YzAoJ7br51idzRf+4LggFLjyjdq3PMNzY BT1nSyI73nTbJOVqTOJoReJ8E6q3v11PNqF7bQPJk8sxE0QKEJVIVKor8uGHOt1rgJSReF0z7 vlgab7K8fsDpYpngKg8oP58PXlCKF4ANjfBlrTHxVaLjw1XElRWV8lkefjWVHl4Y28jWlQwlP sQoHpBGvufc9ehHVku2okGDsWXCItfcXdlemJuUQxUKUp1y3+seKjVZ08tM6XqWfw6FpyU36G 7hUoFpIaOONvwuJHFs2sJHfR1Dp//73v/yaE/v7BtG5v4cqNxipIExEfSOOv9QqKNmzlbSivf DP37Dshxjat3bwVxFciKce2rUfECpURUZGhO/x+dADwzvn5nGsRjChtYt7C22yHKvqpgsNlxT IOoS6rckYkz9iujRdP29llXxJA+em+4i2gm8rM4C3PshImKMsuLbCcJcrC5eSgygQ4zGOz6Bc 482+hV3OuJsrH9Mg+8BW/r+mIP4ACzW6HDeSOfZCniG07+MEOr0DKzsjY568Z6bZ0jFTIm25v TAkA9eBBVVLrYUpf9+6H6wjLNfkmxJPT8xIXHsXseoV233a/XU2LxvfmYx8Wyv7/P0dTRJVg/ rbvVgqjmt3R0/PXJjeuVFz/QB2z+stRKp4jLXnGvuel52jgbqhpT4+YuT194okLUmsMUTeTpS EIbYHQU4uotCOAKeWHVxRvq34xFUDRk8JqPFkedQDSDw5M= Remove extra tmp variable in pktgen_if_write (re-use len instead). Signed-off-by: Peter Seiderer --- Changes v3 -> v4 - new patch (factored out of patch 'net: pktgen: fix access outside of user given buffer in pktgen_if_write()') --- net/core/pktgen.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/net/core/pktgen.c b/net/core/pktgen.c index 279910367ad4..91b06473c925 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -966,7 +966,6 @@ static ssize_t pktgen_if_write(struct file *file, char name[16], valstr[32]; unsigned long value = 0; char *pg_result = NULL; - int tmp = 0; char buf[128]; pg_result = &(pkt_dev->result[0]); @@ -977,12 +976,12 @@ static ssize_t pktgen_if_write(struct file *file, } max = count; - tmp = count_trail_chars(user_buffer, max); - if (tmp < 0) { + len = count_trail_chars(user_buffer, max); + if (len < 0) { pr_warn("illegal format\n"); - return tmp; + return len; } - i = tmp; + i = len; /* Read variable name */ From patchwork Wed Feb 5 13:11:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Seiderer X-Patchwork-Id: 13961024 Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (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 C842F15DBC1; Wed, 5 Feb 2025 13:12:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761133; cv=none; b=iV2M5k9eCKDobwOjRiXkSZqG/jD+N03URaZZ5JF2i/WpNlPwaPc9dtVmJrZSjGZUeNmE3Uh8t7amJyKFnsz2B3qeeh3+VWkwP10D9VOnzhgYuoQYiOJapsljGeT2nI3CBwtEmk22AJFg+vUE0FlL1jmhGcAbp6vjXC+bPw23zbY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761133; c=relaxed/simple; bh=HaTsn8aQF0VRG09Je95Z/RUtJgQ7j2KbJplgaRlrj1g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rPjLVI7skgNDsPLIMFgO+iIkpwOD3eVWhjPORKwHLXIi357N3Ev0njuYlh9ghtw5egVEwdxEOMCUEsXpOKaR2ya36+nKSvukef0pRX82FlFPsPfe/MHbAd4OGrSVcl4b0dQSC4aLeWlWfUeR+igleLVoNBP7hLJpWY84YfAdWf4= 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=kqARW5Z6; arc=none smtp.client-ip=212.227.15.18 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="kqARW5Z6" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1738761124; x=1739365924; i=ps.report@gmx.net; bh=HaTsn8aQF0VRG09Je95Z/RUtJgQ7j2KbJplgaRlrj1g=; 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=kqARW5Z6EA+UEl6yDAMe2yCPGl3XabRnuS8cgQANLypxtcr5pauX9nbUXXXwM/lw kB5PenUDVPrZ42GpytN6fD5fV9MCmuca6NsB0ya9T+ClNzmZPEAKzQo8t8ompODjy UG8yluI9j7P5AqG+G6juvmOYwb4wodByG1mlxWh0C7c1w9/evC/TEoHAjuuN42VBX ZddO033vPUk9YSb0behzhJV+1EF7lQoRav6BG06vEFpvmT8Pdoa3yPGpmMFH8saAe eg3MHRuc/HlSLNQuZVcqzQvB3TvmqMCOf6V0LdqSR1QqkZDATafLwJ+5Efj8mYLGs 0GBckKPc5bboScwgzQ== 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 1MJmKh-1tz7tK3yA5-00PSot; Wed, 05 Feb 2025 14:12:04 +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 11/17] net: pktgen: remove some superfluous variable initializing Date: Wed, 5 Feb 2025 14:11:47 +0100 Message-ID: <20250205131153.476278-12-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: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:YFjuxS58pXpOsNlIYN9TyNzLAG+ngv4CaRkZv9g03t4OZgTmKCC Q4OBFD7QSw3Ch0DMnu7Z3K5KwSCU1zE5/fD+/r2bzl3FaaX6BsnrX/18FvVKuexIL017dbb yXINccm9zNALMVDdAINNCjxy5C2UilKX6d/loVMSbAZ5vAJba/yx+XgvXcsVHdcudeT2gk4 lM076ezTL6uCInMsWr1Tg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:XIkO8hZ+FDY=;tPFRhhLzNEkrLGqoN11rhKubz1F tR2IqBXWEApg5nuD5+uu9jyaj9z/hBnZ+lAXhqu8vzlE/ZBAi03Pdld9KT2DDQQfWGhl4UVjB YvlTExZvfDBoRKgnwtQ5iYA5fWXYMK8yj10Rq0ma7+QhtNUw1mXt78nLn6nOLDPQivJW0rF44 bzvCGOBxv1Dw0UrjLQtmKhWBuXI74j/6da+Ls8RyhqPw9JX+QVuFSKX+e62DleNaRo4N6FSgV Ov0BinZ5JspXKifGFr/Ln6vyiEf/RRK/Gh7X8bK5XQBtdpP5fz0ihB+KtXAfNUx96hC0sja2f WNM4FdFnSSmSHECdR4FAFiPRu8J6J6NmhqRiRHqTRKo/bfAe2LBZv1nffQ9UpiMVvQo+Th/f2 OrWupjcVsVH5gykQd6K7dpb17tbpa0Otfi6oanr7ruewW+rbxlJELGDeTRevA0do33RJ2ptXb ANZKD6qYZGfntLEyLVCpBzdgr53Qc1cbjZtAlj0H9XNj/qkbdAEcAR1tNcfQ3s9Qw9+2zITQx 74OlW1acWzK/dqPCLmlAWOKn7Y5XNxHrOzT6BFXBn0GS1cYOh2E9PC/viMU1/VHaMZvkq6PqV ddi0dpu+6s7ZBb8GivaZp2xN/rVCRrz1UvCQVmOEmSpAytkhSbBB4k17rMBSsLzKlWjtJH7de Jqbj6OoApK4JeQQ1rDsdaMPMe5EjC8NikTJmoJ5OnJCo31ByOkH8SnR0lYap+IzQwmtd+lDgs dZLbd7HTfKWrHadgXeuHlcvFFykz3gWxoaW2rhDKRqMSQ5VywtkK35pND90c6+ngQNqxvnL4I whA9LW+t6mY15FWV+t7b5YvEBPRfzI1aruvvIYyGnL3sVtQ6qqaJA2Lm7CNl3qOPrSejx2nje kgrNLtb9Q0UsumbAFp6HNQOqGVfUi5WT+ekYdV7fJSEeLdqmGxapvm2tmd7dFV1SK656ujAB0 yibAU5D8EtbwXCr9H58DkAHq/igeVSPjbnOXRlvTTwvvRIZk/Ny1tWccZpRkxdmMPJ3M2G+vL q/jX4F9wbn6jYWrAfs6382+OC4Tsk3rIMF2pxtLjujAZU3HQl4YXu5f6N4rXjBAU1nxMeA+U2 co5ZJIlG/OWm0hV2LDcG9ecEwffnvP8JRzQaiHm+4DYKh6hbaBSQSaT+2IyzmSxZ8IzB/oHNS ijcyLtRTrlANjQu43TcStt18OpgkXcOMddTLg3RpNx3p04dYsjCeWDpRyKXcP9G1RMLPuxs8W qaD7s3PMjLIVtTDlnSchQShRI6u84xoZzNnbAn8u7HCW8VMTDLZUNIGx9eSoqOxnEqAfJUm+m aofVfj4wUuPEM9W5u5udyK65sE+Uge3boKMfGhvfLWm2EXzpiKH3tyw3YGYXNR14wxU0wchm/ 9rXlriR/jELtMlAVkNgzfwSiuyI3KQFyilgaXmsCVfR1K49xrzRpQTIXzf Remove some superfluous variable initializing before hex32_arg call (as the same init is done here already). Signed-off-by: Peter Seiderer --- Changes v3 -> v4 - new patch (factored out of patch 'net: pktgen: fix access outside of user given buffer in pktgen_if_write()') --- net/core/pktgen.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/core/pktgen.c b/net/core/pktgen.c index 91b06473c925..84fd88e48275 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -1792,7 +1792,7 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "tos")) { - __u32 tmp_value = 0; + __u32 tmp_value; len = hex32_arg(&user_buffer[i], HEX_2_DIGITS, &tmp_value); if (len < 0) return len; @@ -1808,7 +1808,7 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "traffic_class")) { - __u32 tmp_value = 0; + __u32 tmp_value; len = hex32_arg(&user_buffer[i], HEX_2_DIGITS, &tmp_value); if (len < 0) return len; From patchwork Wed Feb 5 13:11:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Seiderer X-Patchwork-Id: 13961020 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 12C0E156225; Wed, 5 Feb 2025 13:12: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=1738761131; cv=none; b=ZY1+YjhuzTXCB1aMP8Or4PYpzzMMFWdFA/HCm5XjhOJZcYjmqqG+KS2ydijX94vrQA5eVbbuKidUG10E0wI/JFfuWMEsl8SdA4LY8iRXOqvCA4pitt27/PlSrNw1xeiVe3fYsH8wH8cvJn5gS2ZqKZDWcggfNb/vEnCH2nXp52k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761131; c=relaxed/simple; bh=UUKcn7FbQ6O0wPvsVojYNhwuSBxnf92oJVhabua09ag=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ww6Pwa48b9B8hKQmwhh2DQxLlPRWSft3kxePV1pksFTzf5W9DChC/AOggkzCOiTQ8sHy8Gts/Tzmk8ZuyOhuwEkpUJVwfQjJOshHH5cqdxzCfd8fdpDHhgF71gBRLVXM6+k66z92s6GxRBQVPR7V1M3+GbnXgQCrPC+/Ok6DesY= 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=t65UzfxB; 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="t65UzfxB" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1738761124; x=1739365924; i=ps.report@gmx.net; bh=UUKcn7FbQ6O0wPvsVojYNhwuSBxnf92oJVhabua09ag=; 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=t65UzfxB53UMYb32BYCq/mUsdyElYk9pOOq/qFB3e8Wg/LHzyOtIy/DbGW8Da6hm wVt0G+dZmknP/Ab8i3vwA7EyjfMfOpVqv3fvdqudUTEE2ifZmxML5KCGOLbt+y4MN ORwuFxp+jTKaIU3GRow0cYw/XkEYh6cAusnBfdzvuwzyM1yj9lf46hQWzyZDFvGux x+MD+/kbbyoaCrqHigwkQ1f6Xnxe5Z6chkYm8IJ86tCNFsrGcHOoOd+UIxueMJD0t xkg9I5yqSRkgr/FLIkveGT0adTqDvwi79ei/Hh4JpInqGgOaqmOJ9YGbrLW6SExp2 0VGmzC3LZnyUAUdk1w== 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 1MHG8g-1tbFLQ164e-00APxa; Wed, 05 Feb 2025 14:12:04 +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 12/17] net: pktgen: fix mpls maximum labels list parsing Date: Wed, 5 Feb 2025 14:11:48 +0100 Message-ID: <20250205131153.476278-13-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: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:PpaXsn8lsIIOMNUA5cQJ8FYX4oyLHivalE+OO85yp32Fl90jUWD Av/HZsF06wd0nPsTNWB9aFLOr97xtZZqXA3TKkTjf35b5cf0vCVnnWM/uVbooW3KcHGfTHj nPW2ybd0+pRyhQrg+E8Wh7pByg/ZBOZSe0Kb6nTNUsFwMICK5Jbb73sqvKUh5r8uT4hF0oL rNy0ly30JXDatW1sjMsWA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:v7Siu5Tv++I=;qqoMtqWqstPpW64vqNlCpNw3Ib9 X0L1BpmRYWoCkZx1PQBfsRixVS6IjOR5dqPDB3ILpEvWlQ+e62QCXTOmIiLiz5aSEy+Zybv04 dErPAG3f1fJy+O+02MwjHcmgA1a0K5K4EIo8JXoF+R+UWY5LN1KpSdgeFhaFDMPrh3jGhDgX6 hD3jZN27a1RLR2bc7s9DKZqArAj4R/d+KpD7EU7Jybrrgblk1h7HNUapoSvU3HWxgGRrgZ7xg ZKZtN2oO005iOgLwlWa20yRMmOXcXKBFOnMfpg8I81qCyKlMNB+Mvv7bB1pc3flFbs3RUn/p8 ljL7F9G8IhuCzfHsvZmb0HQ4HSmd7e5D2QbKi6GkJnzmRj6X71JUCZ7CPcnWPN3ybBCnsyaUh kZykSyEtxE3hlD/bMgY/9nKOE9zM3TVPdXUyWSbOFhfXp56XD347SP8qVSTt2BBPqIIvL6a+C SYdD7p5hFUW+1C3/yx06JPCv8XKQIHMqByEPX0Xp6XgefVT3Vp2fDdZ2jVY0EHafQM/0ZLpVa Nz1DvTizFsPwq5lRM6ofoeRNNc5CCJ4Y1LzHu6VfWitz6/6M++RdE0Gir0Qm/SuijKvAa+z2z U8KzAJtshN6gfhpRbHn3m7f3DGpgEtjXLWwCdW/dPnUR82WsEsSSQjGfVeK9hVt6CYNrcPPwo 0SoobYDpTN23WsN7zNnPt80a+s+GoVZe+6swexsOD/KYaLpQA43xaTWyyQLRHlWxpI5AuCaK6 6Cn1gHqSApZj4xouDzHUZWUKcvV+Klkhb0XsvN3NmXlBIEIt5opT39KcqiDRfXT5pYacC7Vvq /yJFbrpaDOTAIymuMKsLNPbF6S9+zflMDoQR0nK4SXFq3iVHaGqH53kRFZxmttS0fEQoTpkZH ZDdLPaZM5r1eXJzk1fOUR0Wr/F/3mtkXuCNGUaI/hOe67Wd0KuMe3lJHodeeMssiY8pv7Npm7 koB7vjksjdzC/HYe/yj6VTOXGi2uBnrH0Y0u7X3XElc5y0uUdLRBiJqs0idgSZ/Inz+bLBwBW x0BnkpuJoOCqF5jyQD1GKhYCf9nzrc7iv7K/Mb23rjeMuAgUSWJZ6gqnCB8cnn2Nl6LWPAvKw 8VaPgISJU6nFyB3hkpACxbRoA8bwWXentWM0jSOZfS43Pd/4Rzy3Te51jClXhem4Hl54hTMjz 8OsUip90l6nDOcYdlXgwrTgZId5jjMpxmdAbAs3vA4Ms6fGDhHaj/fC44smrzlR7Gj9J2pBZa u6h3FsBek554ax212QNUgeXNuOoxDjfxAuO7JxIG72xZ+20YutYNex7c59HFKsSaDxIBIMIzu V++khY/fa5ceGwa9/mmJE9TTDkAeEKsuW3zrbpnwyVUDEk= Fix mpls maximum labels list parsing up to MAX_MPLS_LABELS/16 entries (instead of up to MAX_MPLS_LABELS - 1). Fixes: $ echo "mpls 00000f00,00000f01,00000f02,00000f03,00000f04,00000f05,00000f06,00000f07,00000f08,00000f09,00000f0a,00000f0b,00000f0c,00000f0d,00000f0e,00000f0f" > /proc/net/pktgen/lo\@0 -bash: echo: write error: Argument list too long Signed-off-by: Peter Seiderer --- Changes v3 -> v4 - new patch (factored out of patch 'net: pktgen: fix access outside of user given buffer in pktgen_if_write()') --- net/core/pktgen.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/net/core/pktgen.c b/net/core/pktgen.c index 84fd88e48275..0fd15f21119b 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -908,6 +908,10 @@ static int get_labels(const char __user *buffer, struct pktgen_dev *pkt_dev) pkt_dev->nr_labels = 0; do { __u32 tmp; + + if (n >= MAX_MPLS_LABELS) + return -E2BIG; + len = hex32_arg(&buffer[i], HEX_8_DIGITS, &tmp); if (len <= 0) return len; @@ -919,8 +923,6 @@ static int get_labels(const char __user *buffer, struct pktgen_dev *pkt_dev) return -EFAULT; i++; n++; - if (n >= MAX_MPLS_LABELS) - return -E2BIG; } while (c == ','); pkt_dev->nr_labels = n; From patchwork Wed Feb 5 13:11:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Seiderer X-Patchwork-Id: 13961030 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 C22A21DDA15; Wed, 5 Feb 2025 13:12:16 +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=1738761142; cv=none; b=YyFIrLp4AzFM2Uiqsh96+FvgEeiAM0fEPn0bqzGkK1ilyNWOFAf8XSeFy0nSWvLBzlZjYe90gplBY4NLyvMQpo6N+0HVsDr+9OZiJKVZHEBTn17jK5uE+iv83Z+UEqIqmb7NRfetJD4t8q+wiOTHG8XKP0XZ3L6GxLQIlzSqjqY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761142; c=relaxed/simple; bh=Y/3V+emCRXVxI/5pFQD5uxe35BuduQQqfM0vaJoQW90=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZVx8P1yJCAuxpj9bIAAxHQIGQiOFYOJXy9mrRM20nqnO4ReLrRuw/N1UxE5hN/yOPSSuaK1NAfe+edv+5+u0MqGLeIVoirpbkozxyMK1+3n+5hDGEnVknfO2f/FaVydjkdbkawhOnaWURhCN/UPAcinjxo2ImYELjCf23GsNVGk= 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=mh+Ix1Fb; 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="mh+Ix1Fb" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1738761124; x=1739365924; i=ps.report@gmx.net; bh=Y/3V+emCRXVxI/5pFQD5uxe35BuduQQqfM0vaJoQW90=; 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=mh+Ix1FbB/p91J/9vI+m2gz4NsMZFxcSRtf1jbWfgxUWnIQC/kjReXg9JAh11Ey7 DA+apPKK/yru2tjaKlAOAcRJKQaTZUPtcKQYvBAxQDZAePsGo2WAk5JNTsE42ePeA 8595IaaJ19It5kTT4r8o6kJcrQ3SoHM/bnL/8H9WeMsDdOVYM7G1tqvpPrgR7hAeE 2NisdBY61iS/wyLJ2llh2vWz0FtMpX/iGq8BHXeoTEC4jMi0Lv8KfU5Otwt5YkdXZ YJT/nReTViwi3oR+1j+LZDsDjS1V2Za7eZ+5cJN+sTU6/L/HAyYSV0HM3aKQQStGb i7QFA8Wv9DU7YrwgwA== 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 1Mt79P-1tQ47h2J6P-00yWWR; Wed, 05 Feb 2025 14:12:04 +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 13/17] net: pktgen: fix access outside of user given buffer in pktgen_if_write() Date: Wed, 5 Feb 2025 14:11:49 +0100 Message-ID: <20250205131153.476278-14-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: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:SmkqQ3zrOpXc+8olEgHqm882SrpP7wQOkYP4tkkHNS4GgN9NNgC hQ4NbxBwIrCi+iEJ1x+9Ab+s0K8wkAmEvyX+wELNuFojCdCQXj+Vdh91nwTvDYhoP5eov1x t1OgWgqIAMbBPiC2onED7ZyhpteW5dF5HY173D6ZRJj8pv9xu07txLw7DHhrHp3QISEaBrQ 5lQW/tM3r3ezt+9wij2pQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:sUX6qc/EFzs=;VqfxuZkf1FybBx6O1B649Mk7Po8 VooJmF9N6pD5vrd1XeM7MKtgnSuNZPsBuyLpo4As6u0xHcOXGVM+OqW9AVr6gefYAzo26w+VO Kuh1UwmqnRhDPofP4RcPqnW+8MIBgblhI67lEskLb7I8ggqtmenv7tPy76VyeRtijDV6GS0qU jKZ0w70/SibJHgaDbyT505RCShQEvX4pfqCYu6u6saEejZxvg6iA0x9zotXyrKBMvCxC1Qdaa 6NozZqAP+3wAoEPI5h+lJbvOINWOYC5oiAhvVFGm1TxmXMEuRRkRHp5FyD61hrdVdGwY/7H3P GGEIf8NMsLJmjd3viJGVwpiE0PnMQlp00ZXdXT+DHj83n0l+hxEmQ54BFHdnyf4hB9l2ry8DK 1gVse58xVBELdMNS8DvRZzDXAXIcjMuUW+kBlIhooUGH0nbUcawCwW+/pWKMj1qQ/SfnDKiqk Ec3hOV2V3xKE5e53xvehBQtrCuuxP0mCiM6Ux5DGZHFaKD+IoJVn6WNUP6scwcsIR1cyyQZV6 YseCZATiCK0HgTvxjSk2jSPA2HlU0Jvz2kVC3rBmT7dhmSpfI1NSotB1yUHB4nyxNLq/1wdEv rlPrRad5DcD0Cs4AQhq8a7NPBuVv6GmWcJHCCCKtwi/eDqLdc1mD7KZgbH7bzFO0143rsdT1b Iiz9izFVZ6aRIeN3eHyJ1qfdtNAGj023+JvYnU7NAjZKdVqpjN1XDcWOHtmsOv38/ITXKuNnv JxZGekCwsbRsx34EU3fsBaFuM/y+w9/iwufoyWrjKRp/Ph6aWxCFqmkfoCTdjCx3MPm1of8y4 0DZ3I8bmNtogz5LE7mFkiaal4woU9Hr2BU/fRfF5fYdhKmRDvAGKNLaeoq4f7zbbzmNFPa4Ze 7p6rA1XppOSGZvyGQ1bKr3JmH6RW1tU8dsBWPHEhkvc3WT/6mz/2ONmbPyIw7L/jnAQ9QgBiZ iyvJfsXB5wNgMfKcYcpPxGGrWCNQSvHKFWfoiwcY2ixZJPI/Co8bPUMWnyE84GBsrFNn0rtdR MFlBU/cOZKfEwOArLSg8ay8EPHtojMVswb/lCanqUP8uaVMH/HU3s7ZTJB+ldgvRpgl8gu992 Rano5MTixRawad90YgauydiWOKAsL2qvVIGA6BxAfS8BTP/EzRqqTFCmiCuwVd3w4/2IZFwHs /G912xDFlYrfQ9s02rTDm200i6K1VTaHQo0N02dz+LDLSW/eSzOBAyjbw4Gzb4a2+Wk/XmSXs bBwPjzrkHqNolltUxwksQOgxX8GTahyAGWVRP61d2DZ2HjdiIK7unlIyn3UEmok3aWk9qQvNs FnZ7twIvNO7FwPI0rEB5FNgHGSVOGDz8acob2C0zwPxBkM= Honour the user given buffer size for the hex32_arg(), num_arg(), strn_len(), get_imix_entries() and get_labels() calls (otherwise they will access memory outside of the user given buffer). Signed-off-by: Peter Seiderer --- Changes v3 -> v4: - replace C99 comment (suggested by Paolo Abeni) - drop available characters check in strn_len() (suggested by Paolo Abeni) - factored out patch 'net: pktgen: align some variable declarations to the most common pattern' (suggested by Paolo Abeni) - factored out patch 'net: pktgen: remove extra tmp variable (re-use len instead)' (suggested by Paolo Abeni) - factored out patch 'net: pktgen: remove some superfluous variable initializing' (suggested by Paolo Abeni) - factored out patch 'net: pktgen: fix mpls maximum labels list parsing' (suggested by Paolo Abeni) - factored out 'net: pktgen: hex32_arg/num_arg error out in case no characters are available' (suggested by Paolo Abeni) - factored out 'net: pktgen: num_arg error out in case no valid character is parsed' (suggested by Paolo Abeni) Changes v2 -> v3: - no changes Changes v1 -> v2: - additional fix get_imix_entries() and get_labels() --- net/core/pktgen.c | 176 ++++++++++++++++++++++++++++++---------------- 1 file changed, 117 insertions(+), 59 deletions(-) diff --git a/net/core/pktgen.c b/net/core/pktgen.c index 0fd15f21119b..3c42ecf17ba2 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -851,10 +851,11 @@ static int strn_len(const char __user * user_buffer, unsigned int maxlen) * "size1,weight_1 size2,weight_2 ... size_n,weight_n" for example. */ static int get_imix_entries(const char __user *buffer, + unsigned int maxlen, struct pktgen_dev *pkt_dev) { char c; - int i = 0, len; + int i = 0, max, len; pkt_dev->n_imix_entries = 0; @@ -865,10 +866,13 @@ static int get_imix_entries(const char __user *buffer, if (pkt_dev->n_imix_entries >= MAX_IMIX_ENTRIES) return -E2BIG; - len = num_arg(&buffer[i], DEC_10_DIGITS, &size); + max = min(DEC_10_DIGITS, maxlen - i); + len = num_arg(&buffer[i], max, &size); if (len < 0) return len; i += len; + if (i >= maxlen) + return -EINVAL; if (get_user(c, &buffer[i])) return -EFAULT; /* Check for comma between size_i and weight_i */ @@ -879,7 +883,8 @@ static int get_imix_entries(const char __user *buffer, if (size < 14 + 20 + 8) size = 14 + 20 + 8; - len = num_arg(&buffer[i], DEC_10_DIGITS, &weight); + max = min(DEC_10_DIGITS, maxlen - i); + len = num_arg(&buffer[i], max, &weight); if (len < 0) return len; if (weight <= 0) @@ -889,21 +894,23 @@ static int get_imix_entries(const char __user *buffer, pkt_dev->imix_entries[pkt_dev->n_imix_entries].weight = weight; i += len; + pkt_dev->n_imix_entries++; + + if (i >= maxlen) + break; if (get_user(c, &buffer[i])) return -EFAULT; - i++; - pkt_dev->n_imix_entries++; } while (c == ' '); return i; } -static int get_labels(const char __user *buffer, struct pktgen_dev *pkt_dev) +static int get_labels(const char __user *buffer, int maxlen, struct pktgen_dev *pkt_dev) { char c; - int i = 0, len; unsigned int n = 0; + int i = 0, max, len; pkt_dev->nr_labels = 0; do { @@ -912,17 +919,20 @@ static int get_labels(const char __user *buffer, struct pktgen_dev *pkt_dev) if (n >= MAX_MPLS_LABELS) return -E2BIG; - len = hex32_arg(&buffer[i], HEX_8_DIGITS, &tmp); + max = min(HEX_8_DIGITS, maxlen - i); + len = hex32_arg(&buffer[i], max, &tmp); if (len <= 0) return len; pkt_dev->labels[n] = htonl(tmp); if (pkt_dev->labels[n] & MPLS_STACK_BOTTOM) pkt_dev->flags |= F_MPLS_RND; i += len; + n++; + if (i >= maxlen) + break; if (get_user(c, &buffer[i])) return -EFAULT; i++; - n++; } while (c == ','); pkt_dev->nr_labels = n; @@ -986,8 +996,8 @@ static ssize_t pktgen_if_write(struct file *file, i = len; /* Read variable name */ - - len = strn_len(&user_buffer[i], sizeof(name) - 1); + max = min(sizeof(name) - 1, count - i); + len = strn_len(&user_buffer[i], max); if (len < 0) return len; @@ -1015,7 +1025,8 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "min_pkt_size")) { - len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); + max = min(DEC_10_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1032,7 +1043,8 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "max_pkt_size")) { - len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); + max = min(DEC_10_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1051,7 +1063,8 @@ static ssize_t pktgen_if_write(struct file *file, /* Shortcut for min = max */ if (!strcmp(name, "pkt_size")) { - len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); + max = min(DEC_10_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1071,7 +1084,8 @@ static ssize_t pktgen_if_write(struct file *file, if (pkt_dev->clone_skb > 0) return -EINVAL; - len = get_imix_entries(&user_buffer[i], pkt_dev); + max = count - i; + len = get_imix_entries(&user_buffer[i], max, pkt_dev); if (len < 0) return len; @@ -1082,7 +1096,8 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "debug")) { - len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); + max = min(DEC_10_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1093,7 +1108,8 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "frags")) { - len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); + max = min(DEC_10_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1103,7 +1119,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "delay")) { - len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); + max = min(DEC_10_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1118,7 +1135,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "rate")) { - len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); + max = min(DEC_10_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1133,7 +1151,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "ratep")) { - len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); + max = min(DEC_10_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1148,7 +1167,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "udp_src_min")) { - len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); + max = min(DEC_10_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1161,7 +1181,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "udp_dst_min")) { - len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); + max = min(DEC_10_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1174,7 +1195,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "udp_src_max")) { - len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); + max = min(DEC_10_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1187,7 +1209,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "udp_dst_max")) { - len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); + max = min(DEC_10_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1200,7 +1223,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "clone_skb")) { - len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); + max = min(DEC_10_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; /* clone_skb is not supported for netif_receive xmit_mode and @@ -1221,7 +1245,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "count")) { - len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); + max = min(DEC_10_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1232,7 +1257,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "src_mac_count")) { - len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); + max = min(DEC_10_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1246,7 +1272,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "dst_mac_count")) { - len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); + max = min(DEC_10_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1260,7 +1287,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "burst")) { - len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); + max = min(DEC_10_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1279,7 +1307,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "node")) { - len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); + max = min(DEC_10_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1300,11 +1329,12 @@ static ssize_t pktgen_if_write(struct file *file, if (!strcmp(name, "xmit_mode")) { char f[32]; - memset(f, 0, 32); - len = strn_len(&user_buffer[i], sizeof(f) - 1); + max = min(sizeof(f) - 1, count - i); + len = strn_len(&user_buffer[i], max); if (len < 0) return len; + memset(f, 0, sizeof(f)); if (copy_from_user(f, &user_buffer[i], len)) return -EFAULT; i += len; @@ -1340,11 +1370,12 @@ static ssize_t pktgen_if_write(struct file *file, char f[32]; char *end; - memset(f, 0, 32); - len = strn_len(&user_buffer[i], sizeof(f) - 1); + max = min(sizeof(f) - 1, count - i); + len = strn_len(&user_buffer[i], max); if (len < 0) return len; + memset(f, 0, 32); if (copy_from_user(f, &user_buffer[i], len)) return -EFAULT; i += len; @@ -1389,7 +1420,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "dst_min") || !strcmp(name, "dst")) { - len = strn_len(&user_buffer[i], sizeof(pkt_dev->dst_min) - 1); + max = min(sizeof(pkt_dev->dst_min) - 1, count - i); + len = strn_len(&user_buffer[i], max); if (len < 0) return len; @@ -1409,7 +1441,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "dst_max")) { - len = strn_len(&user_buffer[i], sizeof(pkt_dev->dst_max) - 1); + max = min(sizeof(pkt_dev->dst_max) - 1, count - i); + len = strn_len(&user_buffer[i], max); if (len < 0) return len; @@ -1429,7 +1462,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "dst6")) { - len = strn_len(&user_buffer[i], sizeof(buf) - 1); + max = min(sizeof(buf) - 1, count - i); + len = strn_len(&user_buffer[i], max); if (len < 0) return len; @@ -1452,7 +1486,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "dst6_min")) { - len = strn_len(&user_buffer[i], sizeof(buf) - 1); + max = min(sizeof(buf) - 1, count - i); + len = strn_len(&user_buffer[i], max); if (len < 0) return len; @@ -1474,7 +1509,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "dst6_max")) { - len = strn_len(&user_buffer[i], sizeof(buf) - 1); + max = min(sizeof(buf) - 1, count - i); + len = strn_len(&user_buffer[i], max); if (len < 0) return len; @@ -1495,7 +1531,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "src6")) { - len = strn_len(&user_buffer[i], sizeof(buf) - 1); + max = min(sizeof(buf) - 1, count - i); + len = strn_len(&user_buffer[i], max); if (len < 0) return len; @@ -1518,7 +1555,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "src_min")) { - len = strn_len(&user_buffer[i], sizeof(pkt_dev->src_min) - 1); + max = min(sizeof(pkt_dev->src_min) - 1, count - i); + len = strn_len(&user_buffer[i], max); if (len < 0) return len; @@ -1538,7 +1576,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "src_max")) { - len = strn_len(&user_buffer[i], sizeof(pkt_dev->src_max) - 1); + max = min(sizeof(pkt_dev->src_max) - 1, count - i); + len = strn_len(&user_buffer[i], max); if (len < 0) return len; @@ -1558,7 +1597,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "dst_mac")) { - len = strn_len(&user_buffer[i], sizeof(valstr) - 1); + max = min(sizeof(valstr) - 1, count - i); + len = strn_len(&user_buffer[i], max); if (len < 0) return len; @@ -1575,7 +1615,8 @@ static ssize_t pktgen_if_write(struct file *file, return count; } if (!strcmp(name, "src_mac")) { - len = strn_len(&user_buffer[i], sizeof(valstr) - 1); + max = min(sizeof(valstr) - 1, count - i); + len = strn_len(&user_buffer[i], max); if (len < 0) return len; @@ -1599,7 +1640,8 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "flows")) { - len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); + max = min(DEC_10_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1613,7 +1655,8 @@ static ssize_t pktgen_if_write(struct file *file, } #ifdef CONFIG_XFRM if (!strcmp(name, "spi")) { - len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); + max = min(DEC_10_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1624,7 +1667,8 @@ static ssize_t pktgen_if_write(struct file *file, } #endif if (!strcmp(name, "flowlen")) { - len = num_arg(&user_buffer[i], DEC_10_DIGITS, &value); + max = min(DEC_10_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1635,7 +1679,8 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "queue_map_min")) { - len = num_arg(&user_buffer[i], DEC_5_DIGITS, &value); + max = min(DEC_5_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1646,7 +1691,8 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "queue_map_max")) { - len = num_arg(&user_buffer[i], DEC_5_DIGITS, &value); + max = min(DEC_5_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1659,7 +1705,8 @@ static ssize_t pktgen_if_write(struct file *file, if (!strcmp(name, "mpls")) { unsigned int n, cnt; - len = get_labels(&user_buffer[i], pkt_dev); + max = count - i; + len = get_labels(&user_buffer[i], max, pkt_dev); if (len < 0) return len; i += len; @@ -1680,7 +1727,8 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "vlan_id")) { - len = num_arg(&user_buffer[i], DEC_4_DIGITS, &value); + max = min(DEC_4_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1707,7 +1755,8 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "vlan_p")) { - len = num_arg(&user_buffer[i], DEC_1_DIGITS, &value); + max = min(DEC_1_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1722,7 +1771,8 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "vlan_cfi")) { - len = num_arg(&user_buffer[i], DEC_1_DIGITS, &value); + max = min(DEC_1_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1737,7 +1787,8 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "svlan_id")) { - len = num_arg(&user_buffer[i], DEC_4_DIGITS, &value); + max = min(DEC_4_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1764,7 +1815,8 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "svlan_p")) { - len = num_arg(&user_buffer[i], DEC_1_DIGITS, &value); + max = min(DEC_1_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1779,7 +1831,8 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "svlan_cfi")) { - len = num_arg(&user_buffer[i], DEC_1_DIGITS, &value); + max = min(DEC_1_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; @@ -1795,7 +1848,9 @@ static ssize_t pktgen_if_write(struct file *file, if (!strcmp(name, "tos")) { __u32 tmp_value; - len = hex32_arg(&user_buffer[i], HEX_2_DIGITS, &tmp_value); + + max = min(HEX_2_DIGITS, count - i); + len = hex32_arg(&user_buffer[i], max, &tmp_value); if (len < 0) return len; @@ -1811,7 +1866,9 @@ static ssize_t pktgen_if_write(struct file *file, if (!strcmp(name, "traffic_class")) { __u32 tmp_value; - len = hex32_arg(&user_buffer[i], HEX_2_DIGITS, &tmp_value); + + max = min(HEX_2_DIGITS, count - i); + len = hex32_arg(&user_buffer[i], max, &tmp_value); if (len < 0) return len; @@ -1826,7 +1883,8 @@ static ssize_t pktgen_if_write(struct file *file, } if (!strcmp(name, "skb_priority")) { - len = num_arg(&user_buffer[i], DEC_9_DIGITS, &value); + max = min(DEC_9_DIGITS, count - i); + len = num_arg(&user_buffer[i], max, &value); if (len < 0) return len; From patchwork Wed Feb 5 13:11:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Seiderer X-Patchwork-Id: 13961028 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 38DEB18CBFB; Wed, 5 Feb 2025 13:12:13 +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=1738761136; cv=none; b=uYYRMmc5uDXQ+AGXDgHuTykmJYTSMJ/WGTNTcBPJjSEj+uErQzKga7TijeefVRO5quppaFsj/OCDBP/PgSRrzC2iwoaW9PVJH5LO+xLZf+wFttrh2cPzSxWDwW6rFaePwtKqcKDF1FH2QovZkEk6nvqF9wAXfPPbI/WX1VALvoc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761136; c=relaxed/simple; bh=f37hhHJiJKAnuE19WVG25n29TMCE4FA65Sj0CGh2ASk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ND8hihD7Z9klibTXtQS0K7setueuS5VW2MFtaghoEcbb10xqwq7C2GHiAM50Re28i6sZ6B76gbQ1eLEXjuUhFOA/yhN8Qgg41B/+W4aZEYhuoRO45lHNqaBT86JKafE4zVsAF2DXdcPBlGvQZQ2zcMKUusJzo7BePbPXgBJwf3I= 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=mGBNQtPH; 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="mGBNQtPH" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1738761125; x=1739365925; i=ps.report@gmx.net; bh=f37hhHJiJKAnuE19WVG25n29TMCE4FA65Sj0CGh2ASk=; 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=mGBNQtPHmFYpspr6mdCOI3Y5KcMVJB06KDZJmO/gOiN24KAAMYNn+a0rJeWK9mGQ nUfoGaS4bR+CYdxw/0qhwh8IIuZYS8rSD3opUFvhlVE2ffMqfH16D1VEMrmrG8T8W t+uDh1upf74r6b4iKdguUMgzSr1nTgIiQ+xnChN3bWi816MYF06IrcbUmduJpJEof OvVBz+i3kBcnQ1tEzDWRv3dX8yy4dXIFOCrSLsXwfwa8f+Bfqp6LSUSClnuigIPjB o+7oHl6TsjOLD+i9l6jP/7NvGG6XlDqvAf+PYFjNb5NHPzmJbKTsb/sNZiViROhZs K1433ippHSap5rn+5w== 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 1M9Wuk-1tlBVg3ReG-000ULO; Wed, 05 Feb 2025 14:12:04 +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 14/17] net: pktgen: hex32_arg/num_arg error out in case no characters are available Date: Wed, 5 Feb 2025 14:11:50 +0100 Message-ID: <20250205131153.476278-15-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: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:M0Dcyil/fed6e0PMh9kYIQPeSzJ9N2shPblHH2cfYWmID4P+tff TA6AdzKkK9ZZGHme388VAbybPc1uj3FJzcatPIPAse1rN515qSnEs83uibwsGgwl/0JzxQT Uq2H2K483HcvsKSmaNle1uJvJeRnAuYIDZB45/uZVi2B5MVJyGzgiZ54f3fxiusXSW5hM1F 5AFdQDUxouHu1Tqd07HqQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:Pllvyhmy4Ao=;G5J6kKI5ro32Q9VaO5dIYZ2kFQw 04BEuEyVGOwJlRd4nmcNY/3X92uT3ly6lNOYSPIin0yX98aNRTrEtojRNJD9FesexFALxljbA MUNJ/lRMYUG+wijbjZS499tR82ntbXrrTexwAGIiXrKydoiQe/XHds/ea5p23nCmqydhomOoN NAb1oVXuAzMedqAyhD3A4ZcBpZdDOOgNVXi53IAmF/7TBtEAHOQbJz7tFYA89f+pvk56hNgTZ qxMFv8T/YES9HBIkRQnU4RfFkMjFZQ7rZzkNiQ1mKvAn2/qv5kMKTMYg33UJl0CRBKSWhs4PA 6eD5F2tbTnWXDz+++gzzeUaEoUQqVzW39uGKUA7n2GLM0f4/4rTmDJb9hQH0rNnfDHGMf/Lad MIf2Zz3pcW0ecGC6zT/LJWvZ9QCeJIqPAEz+Xvib2NHZ6m2DzGlIYpKmHccaxO0VrD5tP1iL9 7+bCTdlQlysdU5i2hFilEIzx58GWFfBr0DcM1D5kR/3OogYs2ErtcwSdS8tIQRHW5dt88IIy/ sAiMjrIwkcL01RpKs5fYKBIGDof+QvCpfihYLrvS3ezDIa4w20lg8LtlXOIYD/qBx1+CaNA+t 3ef3jxlig08v4G7Z81tGC1SFVwWu66k7psi0EGda2sxuksQCToB+tZ4QthAMCAPOZ2ysFZ8OU iyZ5XXw9Jc3KisqE8HoqOU+rUJDa2NHdX+TruDTw1npdYeYzBcmilGIRp/U5wAOK0yFjmOiGP Lugv/Q+uhrlThITGCizf41PStgBBHjGo9m14p6FoiZ0pcXTH6oMoj+kPATSz93KF61kjxW/VQ GKUERjDpmDLT9dHdjzvjWh6IZoVUEzwQ3syxsVjMn7c0VTM/uMiW1qGyFSU5/FOhCWYEkCMDq wziZ3BgylVk5ui0mOZjFYnEXCIO7Ne07wheVwR5Qv1ASMZeBqb+433rL8WUyBoNO0N0GCwnrR mo1diI8dJBC17w/zrz7zlYpa8Fps5kBAI449jKQOkmSLnIEN588jXqT1R4jOJjsaY8t2DSwiv jy9kRXUTY1KhG3zM6zoNfZcrtq7VgN8FlHwRUDgzCMv0zSDZXAXjZUTdVI4avz6JU97lHosYg iPZbc/qvpsHgQyjGYHbFCyoIv1UPAxvSaldf4+6cL0+xPWe/57pEpliTGCB+HIhyKtWKZv2OH 4ed5Ik1Z79OI/LnzrjtYu6gtj19YUqJ1JsiP1+1Qsj4n5bLOsDMrHBZv1+qkYrIprMd3pyVUF r8SegQr81P1mQCaFNUliPGhJIeNthZvFcA31ddfEJQ0vZANVEjgSVYAQJzwAQWrqjTYxyGF+n cSSY8jWmg7wKSM7vhdFia9LFXvK3r70DVRfmM2FxXOUTfo= In hex32_arg() and num_arg() error out in case no characters are available (maxlen = 0). Signed-off-by: Peter Seiderer --- Changes v3 -> v4 - new patch (factored out of patch 'net: pktgen: fix access outside of user given buffer in pktgen_if_write()') --- net/core/pktgen.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/net/core/pktgen.c b/net/core/pktgen.c index 3c42ecf17ba2..cb3b732fd0a3 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -761,6 +761,9 @@ static int hex32_arg(const char __user *user_buffer, unsigned long maxlen, int i = 0; *num = 0; + if (!maxlen) + return -EINVAL; + for (; i < maxlen; i++) { int value; char c; @@ -808,6 +811,9 @@ static long num_arg(const char __user *user_buffer, unsigned long maxlen, int i; *num = 0; + if (!maxlen) + return -EINVAL; + for (i = 0; i < maxlen; i++) { char c; if (get_user(c, &user_buffer[i])) From patchwork Wed Feb 5 13:11:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Seiderer X-Patchwork-Id: 13961022 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 D12FE158D96; Wed, 5 Feb 2025 13:12:10 +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=1738761132; cv=none; b=gISF1WgoUJKyqdkVs7oKHvlwW1WLLeAma5eJQgpSjZCxgmMrhlGqKJTlsThjrxpZ/jXXhke0C2y239fCbAY35ktRzXQ5MT0Kvq/ZoL+mg1TCUIdHAVsM/T46ZqW/pgvmIKNDEUWHrhmRZQQ/tiaufZmhQlrcveb0bgwly2wxiig= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761132; c=relaxed/simple; bh=+pA63p/sOzpKmlI9XQBY7/IRJuC2ORlkSrBGwknyc9A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=REcCaItycBsZgBx7+4eWLoBHDYk+rkcHZCKaAE7jDOB/Ik/KleF5jZXKyQfwIdQRw46KoKHbHRlVdGij1Z6u6go76dtFIRY6bv3u/hD19cW4whdz+fq8biZCRK7+MgPSqy2BnJnBBI33ys+w6yupTr7SiKNTepYofFt4oTZFIvs= 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=N/mGV0bk; 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="N/mGV0bk" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1738761125; x=1739365925; i=ps.report@gmx.net; bh=+pA63p/sOzpKmlI9XQBY7/IRJuC2ORlkSrBGwknyc9A=; 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=N/mGV0bkyyiwpiLoPZaRXHY7jQrXC7H5ux+gaCTuf1KBh5l80tgA2PMTQ7XspmkX bEPMPXVA30c44FBqiPm4HJaLXJNZsw/tAXme+uFoSC9cczehfwcE8zl+BIAGXLqm1 UZ4AYLzC0ZJ0oYvNLWFc9ALwwyM0syx1MSH7BIQLMZjWJMV+j0yX3kLcQPcAq36NC 7ynV2XJz8kuKM7mPM/1jUcWk6rfrkUAtl/DyhQFQGTsN2rJ9Eps1LZs8ObHQR7+Tl 2hdnw/QyWUcN/VQLK1dUw1OvIxwoH4zwcFkePk6doabPxaReDnXrOTPUu4jj6rIFk /iXg0e7AazXxsG2dvw== 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 1MAONd-1tYD4Y0cln-00HJaT; Wed, 05 Feb 2025 14:12:05 +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 15/17] net: pktgen: num_arg error out in case no valid character is parsed Date: Wed, 5 Feb 2025 14:11:51 +0100 Message-ID: <20250205131153.476278-16-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: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:OwdfeW7srCsmSPs6Q7Sf9Eqij7ID+a/xyjX55WPlQPmG4ZWcKX4 r+RWxMZIKDWW9iUYvo5Nvi3HTrfoYABrRBgZTJiu97tD3E0tj6c8wM+xoAnNnLvjEkAnqV1 l6P1fsvUSJk4DDG5vaXkdkkmD/BJ7Z+TNHNmeQXrWX8st+Aqme1nwQPZ6WNl8Wvo9KYX8GG oJvWCMcJlSoPFQwNwvp+A== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:YXVIf384CeI=;bVcAQLvIa+kfO5OIj7KsaDUBwc8 /U/udXur3/2ZfWaNybTh9CZUdtlUHQPEuSlXSTR/qksSXHT+Hc5rKCK8sU34u3bkjn380fkp9 lAfTrfg8IZYSaR3MDfA8Wuj2rHYv3F6T+YwyYgobG1XKqrBLkiaWhuuRLwGc9QTZgfOtrGz0g 9d5RbaJSDwdAi0pCeFuP3bvxNbDnBE/89eygvQmw0K5COqx+Xq5Z5SE4s6eVW/gRO2RetLwSr bB/z2qB0rZAHtMjjC7uUB3/gpzxwl/I1AgGRwocvWtAN7Ivsm0AasDa8XGeQE9LXj4M0Amr4t +PHUeHvK6v/1uAdInh5tuoz6vOUqu6hK/o5CzDqGWBLkrKkIXGLO4AXgzJgHqS6vTAg0OkC8z dr7YbkMaTD1t8qqDOd92FSOjxXB/xhhT56XHb277QAtzgZ3PZU5I3Jj73fvZ8pdEKEsGtZfC1 DwNdSdtdO7IEKK0DwE2qk/tR3cmxi8vunoKB+3FPFsutOatpztMegm8pLVDemjHtX3uzaXBNo SKHQF6WMzxMtPsQWLio/oNMSjn3gWrQkNaKVplGG8ojDsv8UMsXsXO2lMkokHdH5eb5iJnuhw CZUvrY6RhyYi6pqvi1zaJ/27U0BZMwLcACHtykRq7a5aV0s+O6coWbVEvp+9NDhLUXnAsbit0 kUenixPWfMmqyuNYCwptca4TX+aCup7rIqfICQy42Id8wm/6/UwzRzLg6adD/R+FNhiUS+QE5 CC5k0qpn12ecwJGlcZ+K/p42wMGlPQ8z195WduN8OG7mizztQ+fGFwQCxMeQxrlf9AaGZfayu iR0LTJadgenLGau+jGsgy9G1DaLtd/u4kIlRZevLAsnQBekPwTn8dLdBOT3UGW6yCuwqwOgul 1xeD5O5rWXBlicZJ4PtPjIfQP72VpyafS+X66qfMOE5y1vr46Y9UcbDjRum/gzSjm1DpjFl5u quXxhiCwdMHkOHGFE8Xpe+terD7xoecFK3E6kBux21LHHY9j0fZN+53TLMCUw2WuS6a1XHV5g MWk4qRDKIIlnkT8U1rM34v0VxySJN/Rdo8dwdb5sxcWKLhHPC1aG4bSIxTdBelrF01oCiIdG9 F5sZ3rc2C8putXOrfOsD1fa8rwIUP7k5Df/PVy1e7DRMPaGBY0Zq+NEZB0ySQ/UA2GWplxyBY p0cMp20tnrcoZLdzvABuN24XVGHkNXr9LET6B60EqootlJ3uNqlnMbDuM4gvLXq8wrthgeK7u SZCiEvQtJd4qknmN7FNhN/EEZ3MjwCMiQEiz8OpjLKD9e1cr71GipQM6E/XTZAgj1B+BJ1KUk lA6y+RR0VMI09xGGBhG7F6mrPaITcoWWz/PplJv8vS7gmc= In num_arg() error out in case no valid character is parsed. Signed-off-by: Peter Seiderer --- Changes v3 -> v4 - new patch (factored out of patch 'net: pktgen: fix access outside of user given buffer in pktgen_if_write()') --- net/core/pktgen.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/core/pktgen.c b/net/core/pktgen.c index cb3b732fd0a3..a46eb20edf6c 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -821,6 +821,9 @@ static long num_arg(const char __user *user_buffer, unsigned long maxlen, if ((c >= '0') && (c <= '9')) { *num *= 10; *num += c - '0'; + } else if (i == 0) { + /* no valid character parsed, error out */ + return -EINVAL; } else break; } From patchwork Wed Feb 5 13:11:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Seiderer X-Patchwork-Id: 13961029 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 2A6FC198822; Wed, 5 Feb 2025 13:12:15 +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=1738761138; cv=none; b=PR3UKDr85FVB6jqGRrKsyhjXqhm7rQ3FLFjRCVxrImH3ehZL4qdNJ+2LMtFYqpGqAiwg7L+U5MdmIxsvgV6A34sYEJCCn4tgLbur9lfY+e3khSuwoWmA1rqWayD1pRuEnA7VI5U4CWyld1Tpr2TS9eGA5RU42JqR0ppRWkVV7+o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761138; c=relaxed/simple; bh=MKL4T/vs4ciWtm1Nxs3Uo7fEfdIgvT5ROwme3MNF4kE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZcLmuQHDS60MJEIwWdfncc9xSp2AXWM9DLXmfRp633McCO/aSSEM0cOBDhFDuaCUPraxDkZO9//mKKWlmkI1xI6oakID9ER1tCnsYJdCAJxvWJjZCTU1P9+n64TKi3ezyORrrMxvJVp4L5QZH7ZgUIJ0IyzdWtMx6wMqCHqi6uU= 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=qH65W6Rt; 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="qH65W6Rt" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1738761125; x=1739365925; i=ps.report@gmx.net; bh=MKL4T/vs4ciWtm1Nxs3Uo7fEfdIgvT5ROwme3MNF4kE=; 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=qH65W6RtJfCt6p5xFn/2Ot1m096iAkQ2OM3t9FXYV62B96BH7beukAHObxM2ayjB xKBt2ci9PA7SzNEyKNCEutq2wgC7//PESUPi9M40S1pkIjB4eBcA9OPEtgAvKkeqz HbSOCWLTgT2rfHLi/0Ukr+/JaPLvaF5Rphazhj2++S4LmKFkreJ0kn7BLIzFhThSh iUlr4rYvJCyfYr1I13w72OGjTLxBfdf8dalBtaZk4bMXEvEH4hDrEqfZPIlrZMKeZ lxMYlaBKKksa0mxOKYRHC78eaurC7VZqY7nVcbxdgCJ9Qm0AP1v0tww9tkCaHTHZ+ 7jRWjHE46WTQBnS2Hw== 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 1MNswE-1u3orN1ycy-00LK5C; Wed, 05 Feb 2025 14:12:05 +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 16/17] net: pktgen: fix mpls reset parsing Date: Wed, 5 Feb 2025 14:11:52 +0100 Message-ID: <20250205131153.476278-17-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: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:nVpVkHJ34UhSeujiytmBNDzUCIvcQIZynsFPHAS0nlPJizg/RDY DVxOaUStZSL/XGGjcBnXhASUFcay3MG1HsiZJAKkEtRVkvJwt/t+38YYKUxlexlWLIrgA2p HKSmBGvpRlnhOgpT0F/t74oM62Iqf5TEStcWZgxzARwsZqUFbGqIDVjUtkTJX987SWXcUNL ibdqucSIBGa1RECnXp5LA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:3CrqbqQOtDw=;3PXG7U2162NU/U29UWKEx4RSCq7 PXv8/x5It45iCwcy29hsHrI7cJIiJwwOeD6bdyWD9aCUdviD11VWUx1zyOoWfY0aTueAei6FO qo3aQ7laCNp31atSwDF7ycij3rN1T209OEBgjaXY3vx0YL3Z7YLKy9plaznB7Y2mMk9z1IZzu YUJos1PsXic+oQR/uM+0ZphFANUOv0l4nUWsv32GmiL9xf7J7jPxa1j1neB2ReAnGcAfRCnrk vZXMERR/xDY5/8SgeEw7q8/qUxOW1ywPMHfL9TvpcDdcvnGT71pfH9exU0npxrIJJH3rNVq/m zFL2tLYBii8L3B809lNOk0h5bzrPFeuVr/TzVDyEsOPd7z+xKz163Pn3YejA3W01XSeDM4cf4 5YQ8ufb086qlBprkmmlDuI+qQ2GI3XG405l942aT1V25y16D//slKfDFGrjmDtvtDSl4vJYIL g0G+pt+o3TWwU3iAWUNsaCdFNPBhqaUzGC5orR8RcfqAWdE6DxwqBUFMcrNJq8ZYLHU1WOxiZ sD6j1XNdxnrsL/PLYZohE5tlU0fYzrkNn1dApHMxwCq2Nl/D0B9OspNGW4Ct3bUAG8gsbq2Wy XvppyOwlEL5a9AMN/aVlKRwbxJ/d4aDtm9QtpB8dPONWK88ClpjVZA7ANg1wIeBvJsWNuAsGJ aWZ1wRqj+ETV1eel5yPzM7/571tIwev7URdWBBp1Cdlz5Yb8S3t/2r4YJXmVdiveMOGNO/L+t qE8PGjtEmdqXmyxMNnggWWYd7CXMcHWQ9JKSxARZpGeeTY8ZvN7//RAg9RqElJvd5HAcssWSZ lOqgR60Jm3ZrqtIL24YozsoU7T4K8NdeS/tFAjG2bQMj5xyi4DHI4wyUNUu5o9c9OoLmRhDHl TDwYFzEP1xitZlA4E08MrhE4fbfs8vltw+L9y5zT7bsp9DnqkQusOqitWNfUXTd0uk9G59Afk /Gsh4cPXHZgQNWEAXIKRnDIZ0ZybgEenxwhYcr1ysI20au2XJloim3vvjenXw67gytUFUmps8 UBuhUJCopWF/v6+s+M1aLmVehl/naZaHNla9a4iIIJOPQdgX5Elw0s+F8NuYPSa6QJQ1eyg8w pyJfbLd8hnFdsJ1r7ENm4b5eC0gmY9H2A6wlMYcRkBhw4YkdXtv8qu7PFt8doGoJukaYH6uD4 Krdpt3gAg5n5c/GzUHMKGcyZXjJFExBsRxFsdtg1c6swFR981YR4qVFXEqTooXhM/z4MRu8Fm YQaafiHQqbLkl+5KwLZ+S5h3VKfq3yHp/r8KObRePss12dV1IpTg7nJFEnK/ngKFp3jDxe1ym xZof4q5Z14r3S7EZ6XTYanjcseBhmNE8kQrzW28N+2zpkY= 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 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 a46eb20edf6c..434531a3e3c0 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -930,8 +930,13 @@ static int get_labels(const char __user *buffer, int maxlen, struct pktgen_dev * max = min(HEX_8_DIGITS, 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; From patchwork Wed Feb 5 13:11:53 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Seiderer X-Patchwork-Id: 13961021 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 93FE7154C0B; Wed, 5 Feb 2025 13:12: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=1738761132; cv=none; b=L5cTghmq7nSdqAvTEsRZw2shV25nYX1aCThfBE784kn9iMubVn5eDMurbQqTOaSkPIDPMmilAH+gj0bc9CsBk7piikjjEHpmeXp84Dw9uXM5okim2MAcrImo17QmorZdaf2E9r+1rDv0UduzS90Bs6C44IrveLm5lo54Q+0HmKo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738761132; c=relaxed/simple; bh=Pel83e4KzV0Oj9f1LKpz0Hl738wQX+9EujPLXn2dOss=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Z49puTC2uMtFYtu8SG72ndAnNMFUKT23TRPDAnfXRZKcxrDqywcsktuWt3z04H8LnmcUoD4jMR1RGjlvfWUXfbbIVAenmLq8L1Yqp9o8a4V/u7EilvwxYd+RZequH91t3mObahN1v9fZp0h8wfsDdtc4yXQufs4PYL017RHzj0k= 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=WzmTDNzW; 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="WzmTDNzW" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1738761126; x=1739365926; i=ps.report@gmx.net; bh=Pel83e4KzV0Oj9f1LKpz0Hl738wQX+9EujPLXn2dOss=; 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=WzmTDNzWH8R8AVQhF21UOKysrbBrxK+6s/s5bdrgi8/QM5FUciGOgEvTrprjWIPk trTc5uG4W/q+trcY+nH8s8vnhneQAG1fDpXMv3cNVr24gXjJxX605S6kKlyX93HiJ v9h545Cfp/by3hQ5ajeP+yz45gl7BVWinEllcErT6JBiqoRikcy8KDxad2gRgV8gQ Ch+RweRBviJZ75486B/eDzhdkkgBtnSIrvzlWH3v/UrFxXkRwvrwgX9EoUOoZInWU px2KB8RjJD6eGuIeRgHnsZKi8tJUAG3UJGggZiagSog48AVSZ99VuuN9Ml5RRfxbN di688mWLnY8uZiB4vA== 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 1Mt79P-1tQ47g38W1-00yWWR; Wed, 05 Feb 2025 14:12:05 +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 17/17] selftest: net: add proc_net_pktgen Date: Wed, 5 Feb 2025 14:11:53 +0100 Message-ID: <20250205131153.476278-18-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: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:nCr+WEwSmYb1dE3zXERZR4XG9QdObXgUlM2bFg+psWgpsV53s8n liKdJH3ndOtBtuWiXi/vopNbad9naVYkLJ0K9cUNmsZLtogvWX7kCU/7dIaD4xooz+QlAfZ YjwRsnBj4sMG4JA17QPRwyctUF5o91ChKPms2HbeZC97jtefrlwDVZzaaTAgKYnO7RSuaIT N24WUY9KfMaBsmbOhmsmw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:1UaJfx+7/EQ=;K4976w5SacaA0XTcenFMsbFttD9 k8StYlQJYXwCOmMdW+rfZcq5+cFD7o24SWovGLaXCLLItdDL342i8XESjKMdjLoOw9Ew71xKp EG1cEFael9HwZcnbvTpiHHb5641YoyWdh7+nbEf/8u0slPOIvzXzp/htvjNhZwmRMQt0ialjN zCnoYHzJqoqVWcQpq4tRGhbuwVrTPL9Bh1E5bGi8CJ1YvLplqcXUnUqyWWHVB28GZ1HFA2Z9Z b7m9/mafQbnxTcxL/3peVITC0yg7Z8M4C576M0soC1jYlfO8YrQL03GfRwSEXIP45drpgftKh NtfoxIqEqCtXH7eaVBJH2o/2TUtMmXSU66YylmIu36h8yZvRthiZJXjYgMbVtuPyNgz4e07lo kLqt+HNllgH4RLTwbBRUjd1do8JD0PXMd4CZJXAqSMkOHcwfRLrI2PWr9MvCMo3/Vw67iPIs9 g66Vvw7xSwEAREpueKPm9m8xwGwTINBKDEmQj/aQguIs63e3Hmao8I+5jlP0wZiq312T1oqfB LKAcYgTuH7X4S7zFX1YuJhFhaB5MYeKC5eaUn3Xa9YXj2KUN1pf+B5STHZAlfXTBMUq8OQINr zbQzjk5Fx+Njms6shXbdFJpOJB9tQjGf2erwiI2kHaUHW+ivG2s5Zk3UIQ/tFMnmCw9CkbcZW ZAVMcJN04MDdEkHpO8OCQmufLEZVgDVkiPzY7Td6q+l5p8oEI2dyI3oXxNG43qTsP88Frw/6p Xg5Gy7BiiAnNroIGim+SCVLTvDHYM5K6vmHvKxZ3AousaE1cYubZ1zafPE4K6Od7uXqwYWVds YGAIOEljoWLDD3kINgqB2V3ajrW6ljVDO3CAaPt/egwCqCvUFPS9bGUPxKCdnQvQcXNhQOXtM lensND55hjlOM7pKHFaIL3TIq2gHc1gi6HgVkeZs8X7GsYMaVTKUxFXCjZUwYDTWLwfoJbK4S qnnk5N+0hVCmlM/0jSqrNk1/IJxiHT06wliJlQJy4XFVlkaOUJIV5G4kAc6ywwo9A2hOZHkYL 2laeWseQ1QE8yN1CWX1A30ZK6dOWLw6wGocdN7nQZmTJIRXjenrwWDxp53cP3BG42CgH4/sJE HStytnRn4T5ahh6GpRj5FVbmY8LXE8awMWcwjL7/94s3tb2fXVwHtgYQsaKa6aYM+4lX/uvuA AhdN2SbEbE+fD2+Gbv3rtSFfhwucgogV/GyKtnijufy5O+WHOqGm5Db3x8uyf+H5Ufb02IHM4 +E7Z8JQxKq7NaWtXQBllw6x5xrL7lrBQuYYr5uyv9l2aPPbrWo9WoUtzObsoprsxtJMsrh1cJ gdhvQ5mcETFaB42PF7uimiHn/7uJo4riL+70JT1eMX2Dwg= Add some test for /proc/net/pktgen/... interface. - enable 'CONFIG_NET_PKTGEN=m' in tools/testing/selftests/net/config Signed-off-by: Peter Seiderer --- Changes v3 -> v4: - no changes Changes v2 -> v3: - fix typo in change description ('v1 -> v1' and tyop) - rename some vars to better match usage add_loopback_0 -> thr_cmd_add_loopback_0 rm_loopback_0 -> thr_cmd_rm_loopback_0 wrong_ctrl_cmd -> wrong_thr_cmd legacy_ctrl_cmd -> legacy_thr_cmd ctrl_fd -> thr_fd - add ctrl interface tests Changes v1 -> v2: - fix tyop not vs. nod (suggested by Jakub Kicinski) - fix misaligned line (suggested by Jakub Kicinski) - enable fomerly commented out CONFIG_XFRM dependent test (command spi), as CONFIG_XFRM is enabled via tools/testing/selftests/net/config CONFIG_XFRM_INTERFACE/CONFIG_XFRM_USER (suggestex by Jakub Kicinski) - add CONFIG_NET_PKTGEN=m to tools/testing/selftests/net/config (suggested by Jakub Kicinski) - add modprobe pktgen to FIXTURE_SETUP() (suggested by Jakub Kicinski) - fix some checkpatch warnings (Missing a blank line after declarations) - shrink line length by re-naming some variables (command -> cmd, device -> dev) - add 'rate 0' testcase - add 'ratep 0' testcase --- tools/testing/selftests/net/Makefile | 1 + tools/testing/selftests/net/config | 1 + tools/testing/selftests/net/proc_net_pktgen.c | 650 ++++++++++++++++++ 3 files changed, 652 insertions(+) create mode 100644 tools/testing/selftests/net/proc_net_pktgen.c diff --git a/tools/testing/selftests/net/Makefile b/tools/testing/selftests/net/Makefile index 73ee88d6b043..095708cd8345 100644 --- a/tools/testing/selftests/net/Makefile +++ b/tools/testing/selftests/net/Makefile @@ -100,6 +100,7 @@ TEST_PROGS += vlan_bridge_binding.sh TEST_PROGS += bpf_offload.py TEST_PROGS += ipv6_route_update_soft_lockup.sh TEST_PROGS += busy_poll_test.sh +TEST_GEN_PROGS += proc_net_pktgen # YNL files, must be before "include ..lib.mk" YNL_GEN_FILES := busy_poller netlink-dumps diff --git a/tools/testing/selftests/net/config b/tools/testing/selftests/net/config index 5b9baf708950..9fe1b3464fbc 100644 --- a/tools/testing/selftests/net/config +++ b/tools/testing/selftests/net/config @@ -107,3 +107,4 @@ CONFIG_XFRM_INTERFACE=m CONFIG_XFRM_USER=m CONFIG_IP_NF_MATCH_RPFILTER=m CONFIG_IP6_NF_MATCH_RPFILTER=m +CONFIG_NET_PKTGEN=m diff --git a/tools/testing/selftests/net/proc_net_pktgen.c b/tools/testing/selftests/net/proc_net_pktgen.c new file mode 100644 index 000000000000..81bc9e9e412f --- /dev/null +++ b/tools/testing/selftests/net/proc_net_pktgen.c @@ -0,0 +1,650 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * proc_net_pktgen: kselftest for /proc/net/pktgen interface + * + * Copyright (c) 2025 Peter Seiderer + * + */ +#include +#include +#include +#include + +#include "../kselftest_harness.h" + +static const char ctrl_cmd_stop[] = "stop"; +static const char ctrl_cmd_start[] = "start"; +static const char ctrl_cmd_reset[] = "reset"; + +static const char wrong_ctrl_cmd[] = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"; + +static const char thr_cmd_add_loopback_0[] = "add_device lo@0"; +static const char thr_cmd_rm_loopback_0[] = "rem_device_all"; + +static const char wrong_thr_cmd[] = "forsureawrongcommand"; +static const char legacy_thr_cmd[] = "max_before_softirq"; + +static const char wrong_dev_cmd[] = "forsurewrongcommand"; +static const char dev_cmd_min_pkt_size_0[] = "min_pkt_size"; +static const char dev_cmd_min_pkt_size_1[] = "min_pkt_size "; +static const char dev_cmd_min_pkt_size_2[] = "min_pkt_size 0"; +static const char dev_cmd_min_pkt_size_3[] = "min_pkt_size 1"; +static const char dev_cmd_min_pkt_size_4[] = "min_pkt_size 100"; +static const char dev_cmd_min_pkt_size_5[] = "min_pkt_size=1001"; +static const char dev_cmd_min_pkt_size_6[] = "min_pkt_size =2002"; +static const char dev_cmd_min_pkt_size_7[] = "min_pkt_size= 3003"; +static const char dev_cmd_min_pkt_size_8[] = "min_pkt_size = 4004"; +static const char dev_cmd_max_pkt_size_0[] = "max_pkt_size 200"; +static const char dev_cmd_pkt_size_0[] = "pkt_size 300"; +static const char dev_cmd_imix_weights_0[] = "imix_weights 0,7 576,4 1500,1"; +static const char dev_cmd_imix_weights_1[] = "imix_weights 101,1 102,2 103,3 104,4 105,5 106,6 107,7 108,8 109,9 110,10 111,11 112,12 113,13 114,14 115,15 116,16 117,17 118,18 119,19 120,20"; +static const char dev_cmd_imix_weights_2[] = "imix_weights 100,1 102,2 103,3 104,4 105,5 106,6 107,7 108,8 109,9 110,10 111,11 112,12 113,13 114,14 115,15 116,16 117,17 118,18 119,19 120,20 121,21"; +static const char dev_cmd_debug_0[] = "debug 1"; +static const char dev_cmd_debug_1[] = "debug 0"; +static const char dev_cmd_frags_0[] = "frags 100"; +static const char dev_cmd_delay_0[] = "delay 100"; +static const char dev_cmd_delay_1[] = "delay 2147483647"; +static const char dev_cmd_rate_0[] = "rate 0"; +static const char dev_cmd_rate_1[] = "rate 100"; +static const char dev_cmd_ratep_0[] = "ratep 0"; +static const char dev_cmd_ratep_1[] = "ratep 200"; +static const char dev_cmd_udp_src_min_0[] = "udp_src_min 1"; +static const char dev_cmd_udp_dst_min_0[] = "udp_dst_min 2"; +static const char dev_cmd_udp_src_max_0[] = "udp_src_max 3"; +static const char dev_cmd_udp_dst_max_0[] = "udp_dst_max 4"; +static const char dev_cmd_clone_skb_0[] = "clone_skb 1"; +static const char dev_cmd_clone_skb_1[] = "clone_skb 0"; +static const char dev_cmd_count_0[] = "count 100"; +static const char dev_cmd_src_mac_count_0[] = "src_mac_count 100"; +static const char dev_cmd_dst_mac_count_0[] = "dst_mac_count 100"; +static const char dev_cmd_burst_0[] = "burst 0"; +static const char dev_cmd_node_0[] = "node 100"; +static const char dev_cmd_xmit_mode_0[] = "xmit_mode start_xmit"; +static const char dev_cmd_xmit_mode_1[] = "xmit_mode netif_receive"; +static const char dev_cmd_xmit_mode_2[] = "xmit_mode queue_xmit"; +static const char dev_cmd_xmit_mode_3[] = "xmit_mode nonsense"; +static const char dev_cmd_flag_0[] = "flag UDPCSUM"; +static const char dev_cmd_flag_1[] = "flag !UDPCSUM"; +static const char dev_cmd_flag_2[] = "flag nonsense"; +static const char dev_cmd_dst_min_0[] = "dst_min 101.102.103.104"; +static const char dev_cmd_dst_0[] = "dst 101.102.103.104"; +static const char dev_cmd_dst_max_0[] = "dst_max 201.202.203.204"; +static const char dev_cmd_dst6_0[] = "dst6 2001:db38:1234:0000:0000:0000:0000:0000"; +static const char dev_cmd_dst6_min_0[] = "dst6_min 2001:db8:1234:0000:0000:0000:0000:0000"; +static const char dev_cmd_dst6_max_0[] = "dst6_max 2001:db8:1234:0000:0000:0000:0000:0000"; +static const char dev_cmd_src6_0[] = "src6 2001:db38:1234:0000:0000:0000:0000:0000"; +static const char dev_cmd_src_min_0[] = "src_min 101.102.103.104"; +static const char dev_cmd_src_max_0[] = "src_max 201.202.203.204"; +static const char dev_cmd_dst_mac_0[] = "dst_mac 01:02:03:04:05:06"; +static const char dev_cmd_src_mac_0[] = "src_mac 11:12:13:14:15:16"; +static const char dev_cmd_clear_counters_0[] = "clear_counters"; +static const char dev_cmd_flows_0[] = "flows 100"; +static const char dev_cmd_spi_0[] = "spi 100"; +static const char dev_cmd_flowlen_0[] = "flowlen 100"; +static const char dev_cmd_queue_map_min_0[] = "queue_map_min 1"; +static const char dev_cmd_queue_map_max_0[] = "queue_map_max 2"; +static const char dev_cmd_mpls_0[] = "mpls 00000001"; +static const char dev_cmd_mpls_1[] = "mpls 00000001,000000f2"; +static const char dev_cmd_mpls_2[] = "mpls 00000f00,00000f01,00000f02,00000f03,00000f04,00000f05,00000f06,00000f07,00000f08,00000f09,00000f0a,00000f0b,00000f0c,00000f0d,00000f0e,00000f0f"; +static const char dev_cmd_mpls_3[] = "mpls 00000f00,00000f01,00000f02,00000f03,00000f04,00000f05,00000f06,00000f07,00000f08,00000f09,00000f0a,00000f0b,00000f0c,00000f0d,00000f0e,00000f0f,00000f10"; +static const char dev_cmd_vlan_id_0[] = "vlan_id 1"; +static const char dev_cmd_vlan_p_0[] = "vlan_p 1"; +static const char dev_cmd_vlan_cfi_0[] = "vlan_cfi 1"; +static const char dev_cmd_vlan_id_1[] = "vlan_id 4096"; +static const char dev_cmd_svlan_id_0[] = "svlan_id 1"; +static const char dev_cmd_svlan_p_0[] = "svlan_p 1"; +static const char dev_cmd_svlan_cfi_0[] = "svlan_cfi 1"; +static const char dev_cmd_svlan_id_1[] = "svlan_id 4096"; +static const char dev_cmd_tos_0[] = "tos 0"; +static const char dev_cmd_tos_1[] = "tos 0f"; +static const char dev_cmd_tos_2[] = "tos 0ff"; +static const char dev_cmd_traffic_class_0[] = "traffic_class f0"; +static const char dev_cmd_skb_priority_0[] = "skb_priority 999"; + +FIXTURE(proc_net_pktgen) { + int ctrl_fd; + int thr_fd; + int dev_fd; +}; + +FIXTURE_SETUP(proc_net_pktgen) { + int r; + ssize_t len; + + r = system("modprobe pktgen"); + ASSERT_EQ(r, 0) TH_LOG("CONFIG_NET_PKTGEN not enabled, module pktgen not loaded?"); + + self->ctrl_fd = open("/proc/net/pktgen/pgctrl", O_RDWR); + ASSERT_GE(self->ctrl_fd, 0) TH_LOG("CONFIG_NET_PKTGEN not enabled, module pktgen not loaded?"); + + self->thr_fd = open("/proc/net/pktgen/kpktgend_0", O_RDWR); + ASSERT_GE(self->thr_fd, 0) TH_LOG("CONFIG_NET_PKTGEN not enabled, module pktgen not loaded?"); + + len = write(self->thr_fd, thr_cmd_add_loopback_0, sizeof(thr_cmd_add_loopback_0)); + ASSERT_EQ(len, sizeof(thr_cmd_add_loopback_0)) TH_LOG("device lo@0 already registered?"); + + self->dev_fd = open("/proc/net/pktgen/lo@0", O_RDWR); + ASSERT_GE(self->dev_fd, 0) TH_LOG("device entry for lo@0 missing?"); +} + +FIXTURE_TEARDOWN(proc_net_pktgen) { + int ret; + ssize_t len; + + ret = close(self->dev_fd); + EXPECT_EQ(ret, 0); + + len = write(self->thr_fd, thr_cmd_rm_loopback_0, sizeof(thr_cmd_rm_loopback_0)); + EXPECT_EQ(len, sizeof(thr_cmd_rm_loopback_0)); + + ret = close(self->thr_fd); + EXPECT_EQ(ret, 0); + + ret = close(self->ctrl_fd); + EXPECT_EQ(ret, 0); +} + +TEST_F(proc_net_pktgen, wrong_ctrl_cmd) { + for (int i = 0; i <= sizeof(wrong_ctrl_cmd); i++) { + ssize_t len; + + len = write(self->ctrl_fd, wrong_ctrl_cmd, i); + EXPECT_EQ(len, -1); + EXPECT_EQ(errno, EINVAL); + } +} + +TEST_F(proc_net_pktgen, ctrl_cmd) { + ssize_t len; + + len = write(self->ctrl_fd, ctrl_cmd_stop, sizeof(ctrl_cmd_stop)); + EXPECT_EQ(len, sizeof(ctrl_cmd_stop)); + + len = write(self->ctrl_fd, ctrl_cmd_stop, sizeof(ctrl_cmd_stop) - 1); + EXPECT_EQ(len, sizeof(ctrl_cmd_stop) - 1); + + len = write(self->ctrl_fd, ctrl_cmd_start, sizeof(ctrl_cmd_start)); + EXPECT_EQ(len, sizeof(ctrl_cmd_start)); + + len = write(self->ctrl_fd, ctrl_cmd_start, sizeof(ctrl_cmd_start) - 1); + EXPECT_EQ(len, sizeof(ctrl_cmd_start) - 1); + + len = write(self->ctrl_fd, ctrl_cmd_reset, sizeof(ctrl_cmd_reset)); + EXPECT_EQ(len, sizeof(ctrl_cmd_reset)); + + len = write(self->ctrl_fd, ctrl_cmd_reset, sizeof(ctrl_cmd_reset) - 1); + EXPECT_EQ(len, sizeof(ctrl_cmd_reset) - 1); +} + +TEST_F(proc_net_pktgen, wrong_thr_cmd) { + for (int i = 0; i <= sizeof(wrong_thr_cmd); i++) { + ssize_t len; + + len = write(self->thr_fd, wrong_thr_cmd, i); + EXPECT_EQ(len, -1); + EXPECT_EQ(errno, EINVAL); + } +} + +TEST_F(proc_net_pktgen, legacy_thr_cmd) { + for (int i = 0; i <= sizeof(legacy_thr_cmd); i++) { + ssize_t len; + + len = write(self->thr_fd, legacy_thr_cmd, i); + if (i < (sizeof(legacy_thr_cmd) - 1)) { + // incomplete command string + EXPECT_EQ(len, -1); + EXPECT_EQ(errno, EINVAL); + } else { + // complete command string without/with trailing '\0' + EXPECT_EQ(len, i); + } + } +} + +TEST_F(proc_net_pktgen, wrong_dev_cmd) { + for (int i = 0; i <= sizeof(wrong_dev_cmd); i++) { + ssize_t len; + + len = write(self->dev_fd, wrong_dev_cmd, i); + EXPECT_EQ(len, -1); + EXPECT_EQ(errno, EINVAL); + } +} + +TEST_F(proc_net_pktgen, dev_cmd_min_pkt_size) { + ssize_t len; + + // with trailing '\0' + len = write(self->dev_fd, dev_cmd_min_pkt_size_0, sizeof(dev_cmd_min_pkt_size_0)); + EXPECT_EQ(len, -1); + EXPECT_EQ(errno, EINVAL); + + // without trailing '\0' + len = write(self->dev_fd, dev_cmd_min_pkt_size_0, sizeof(dev_cmd_min_pkt_size_0) - 1); + EXPECT_EQ(len, -1); + EXPECT_EQ(errno, EINVAL); + + // with trailing '\0' + len = write(self->dev_fd, dev_cmd_min_pkt_size_1, sizeof(dev_cmd_min_pkt_size_1)); + EXPECT_EQ(len, -1); + EXPECT_EQ(errno, EINVAL); + + // without trailing '\0' + len = write(self->dev_fd, dev_cmd_min_pkt_size_1, sizeof(dev_cmd_min_pkt_size_1) - 1); + EXPECT_EQ(len, -1); + EXPECT_EQ(errno, EINVAL); + + // with trailing '\0' + len = write(self->dev_fd, dev_cmd_min_pkt_size_2, sizeof(dev_cmd_min_pkt_size_2)); + EXPECT_EQ(len, sizeof(dev_cmd_min_pkt_size_2)); + + // without trailing '\0' + len = write(self->dev_fd, dev_cmd_min_pkt_size_2, sizeof(dev_cmd_min_pkt_size_2) - 1); + EXPECT_EQ(len, sizeof(dev_cmd_min_pkt_size_2) - 1); + + len = write(self->dev_fd, dev_cmd_min_pkt_size_3, sizeof(dev_cmd_min_pkt_size_3)); + EXPECT_EQ(len, sizeof(dev_cmd_min_pkt_size_3)); + + len = write(self->dev_fd, dev_cmd_min_pkt_size_4, sizeof(dev_cmd_min_pkt_size_4)); + EXPECT_EQ(len, sizeof(dev_cmd_min_pkt_size_4)); + + len = write(self->dev_fd, dev_cmd_min_pkt_size_5, sizeof(dev_cmd_min_pkt_size_5)); + EXPECT_EQ(len, sizeof(dev_cmd_min_pkt_size_5)); + + len = write(self->dev_fd, dev_cmd_min_pkt_size_6, sizeof(dev_cmd_min_pkt_size_6)); + EXPECT_EQ(len, sizeof(dev_cmd_min_pkt_size_6)); + + len = write(self->dev_fd, dev_cmd_min_pkt_size_7, sizeof(dev_cmd_min_pkt_size_7)); + EXPECT_EQ(len, sizeof(dev_cmd_min_pkt_size_7)); + + len = write(self->dev_fd, dev_cmd_min_pkt_size_8, sizeof(dev_cmd_min_pkt_size_8)); + EXPECT_EQ(len, sizeof(dev_cmd_min_pkt_size_8)); +} + +TEST_F(proc_net_pktgen, dev_cmd_max_pkt_size) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_max_pkt_size_0, sizeof(dev_cmd_max_pkt_size_0)); + EXPECT_EQ(len, sizeof(dev_cmd_max_pkt_size_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_pkt_size) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_pkt_size_0, sizeof(dev_cmd_pkt_size_0)); + EXPECT_EQ(len, sizeof(dev_cmd_pkt_size_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_imix_weights) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_imix_weights_0, sizeof(dev_cmd_imix_weights_0)); + EXPECT_EQ(len, sizeof(dev_cmd_imix_weights_0)); + + len = write(self->dev_fd, dev_cmd_imix_weights_1, sizeof(dev_cmd_imix_weights_1)); + EXPECT_EQ(len, sizeof(dev_cmd_imix_weights_1)); + + len = write(self->dev_fd, dev_cmd_imix_weights_2, sizeof(dev_cmd_imix_weights_2)); + EXPECT_EQ(len, -1); + EXPECT_EQ(errno, E2BIG); +} + +TEST_F(proc_net_pktgen, dev_cmd_debug) { + ssize_t len; + + // debug on + len = write(self->dev_fd, dev_cmd_debug_0, sizeof(dev_cmd_debug_0)); + EXPECT_EQ(len, sizeof(dev_cmd_debug_0)); + + // debug off + len = write(self->dev_fd, dev_cmd_debug_1, sizeof(dev_cmd_debug_1)); + EXPECT_EQ(len, sizeof(dev_cmd_debug_1)); +} + +TEST_F(proc_net_pktgen, dev_cmd_frags) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_frags_0, sizeof(dev_cmd_frags_0)); + EXPECT_EQ(len, sizeof(dev_cmd_frags_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_delay) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_delay_0, sizeof(dev_cmd_delay_0)); + EXPECT_EQ(len, sizeof(dev_cmd_delay_0)); + + len = write(self->dev_fd, dev_cmd_delay_1, sizeof(dev_cmd_delay_1)); + EXPECT_EQ(len, sizeof(dev_cmd_delay_1)); +} + +TEST_F(proc_net_pktgen, dev_cmd_rate) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_rate_0, sizeof(dev_cmd_rate_0)); + EXPECT_EQ(len, -1); + EXPECT_EQ(errno, EINVAL); + + len = write(self->dev_fd, dev_cmd_rate_1, sizeof(dev_cmd_rate_1)); + EXPECT_EQ(len, sizeof(dev_cmd_rate_1)); +} + +TEST_F(proc_net_pktgen, dev_cmd_ratep) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_ratep_0, sizeof(dev_cmd_ratep_0)); + EXPECT_EQ(len, -1); + EXPECT_EQ(errno, EINVAL); + + len = write(self->dev_fd, dev_cmd_ratep_1, sizeof(dev_cmd_ratep_1)); + EXPECT_EQ(len, sizeof(dev_cmd_ratep_1)); +} + +TEST_F(proc_net_pktgen, dev_cmd_udp_src_min) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_udp_src_min_0, sizeof(dev_cmd_udp_src_min_0)); + EXPECT_EQ(len, sizeof(dev_cmd_udp_src_min_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_udp_dst_min) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_udp_dst_min_0, sizeof(dev_cmd_udp_dst_min_0)); + EXPECT_EQ(len, sizeof(dev_cmd_udp_dst_min_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_udp_src_max) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_udp_src_max_0, sizeof(dev_cmd_udp_src_max_0)); + EXPECT_EQ(len, sizeof(dev_cmd_udp_src_max_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_udp_dst_max) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_udp_dst_max_0, sizeof(dev_cmd_udp_dst_max_0)); + EXPECT_EQ(len, sizeof(dev_cmd_udp_dst_max_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_clone_skb) { + ssize_t len; + + // clone_skb on (gives EOPNOTSUPP on lo device) + len = write(self->dev_fd, dev_cmd_clone_skb_0, sizeof(dev_cmd_clone_skb_0)); + EXPECT_EQ(len, -1); + EXPECT_EQ(errno, EOPNOTSUPP); + + // clone_skb off + len = write(self->dev_fd, dev_cmd_clone_skb_1, sizeof(dev_cmd_clone_skb_1)); + EXPECT_EQ(len, sizeof(dev_cmd_clone_skb_1)); +} + +TEST_F(proc_net_pktgen, dev_cmd_count) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_count_0, sizeof(dev_cmd_count_0)); + EXPECT_EQ(len, sizeof(dev_cmd_count_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_src_mac_count) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_src_mac_count_0, sizeof(dev_cmd_src_mac_count_0)); + EXPECT_EQ(len, sizeof(dev_cmd_src_mac_count_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_dst_mac_count) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_dst_mac_count_0, sizeof(dev_cmd_dst_mac_count_0)); + EXPECT_EQ(len, sizeof(dev_cmd_dst_mac_count_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_burst) { + ssize_t len; + + // burst off + len = write(self->dev_fd, dev_cmd_burst_0, sizeof(dev_cmd_burst_0)); + EXPECT_EQ(len, sizeof(dev_cmd_burst_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_node) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_node_0, sizeof(dev_cmd_node_0)); + EXPECT_EQ(len, sizeof(dev_cmd_node_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_xmit_mode) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_xmit_mode_0, sizeof(dev_cmd_xmit_mode_0)); + EXPECT_EQ(len, sizeof(dev_cmd_xmit_mode_0)); + + len = write(self->dev_fd, dev_cmd_xmit_mode_1, sizeof(dev_cmd_xmit_mode_1)); + EXPECT_EQ(len, sizeof(dev_cmd_xmit_mode_1)); + + len = write(self->dev_fd, dev_cmd_xmit_mode_2, sizeof(dev_cmd_xmit_mode_2)); + EXPECT_EQ(len, sizeof(dev_cmd_xmit_mode_2)); + + len = write(self->dev_fd, dev_cmd_xmit_mode_3, sizeof(dev_cmd_xmit_mode_3)); + EXPECT_EQ(len, sizeof(dev_cmd_xmit_mode_3)); +} + +TEST_F(proc_net_pktgen, dev_cmd_flag) { + ssize_t len; + + // flag UDPCSUM on + len = write(self->dev_fd, dev_cmd_flag_0, sizeof(dev_cmd_flag_0)); + EXPECT_EQ(len, sizeof(dev_cmd_flag_0)); + + // flag UDPCSUM off + len = write(self->dev_fd, dev_cmd_flag_1, sizeof(dev_cmd_flag_1)); + EXPECT_EQ(len, sizeof(dev_cmd_flag_1)); + + // flag invalid + len = write(self->dev_fd, dev_cmd_flag_2, sizeof(dev_cmd_flag_2)); + EXPECT_EQ(len, sizeof(dev_cmd_flag_2)); +} + +TEST_F(proc_net_pktgen, dev_cmd_dst_min) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_dst_min_0, sizeof(dev_cmd_dst_min_0)); + EXPECT_EQ(len, sizeof(dev_cmd_dst_min_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_dst) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_dst_0, sizeof(dev_cmd_dst_0)); + EXPECT_EQ(len, sizeof(dev_cmd_dst_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_dst_max) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_dst_max_0, sizeof(dev_cmd_dst_max_0)); + EXPECT_EQ(len, sizeof(dev_cmd_dst_max_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_dst6) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_dst6_0, sizeof(dev_cmd_dst6_0)); + EXPECT_EQ(len, sizeof(dev_cmd_dst6_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_dst6_min) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_dst6_min_0, sizeof(dev_cmd_dst6_min_0)); + EXPECT_EQ(len, sizeof(dev_cmd_dst6_min_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_dst6_max) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_dst6_max_0, sizeof(dev_cmd_dst6_max_0)); + EXPECT_EQ(len, sizeof(dev_cmd_dst6_max_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_src6) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_src6_0, sizeof(dev_cmd_src6_0)); + EXPECT_EQ(len, sizeof(dev_cmd_src6_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_src_min) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_src_min_0, sizeof(dev_cmd_src_min_0)); + EXPECT_EQ(len, sizeof(dev_cmd_src_min_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_src_max) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_src_max_0, sizeof(dev_cmd_src_max_0)); + EXPECT_EQ(len, sizeof(dev_cmd_src_max_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_dst_mac) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_dst_mac_0, sizeof(dev_cmd_dst_mac_0)); + EXPECT_EQ(len, sizeof(dev_cmd_dst_mac_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_src_mac) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_src_mac_0, sizeof(dev_cmd_src_mac_0)); + EXPECT_EQ(len, sizeof(dev_cmd_src_mac_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_clear_counters) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_clear_counters_0, sizeof(dev_cmd_clear_counters_0)); + EXPECT_EQ(len, sizeof(dev_cmd_clear_counters_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_flows) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_flows_0, sizeof(dev_cmd_flows_0)); + EXPECT_EQ(len, sizeof(dev_cmd_flows_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_spi) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_spi_0, sizeof(dev_cmd_spi_0)); + EXPECT_EQ(len, sizeof(dev_cmd_spi_0)) TH_LOG("CONFIG_XFRM not enabled?"); +} + +TEST_F(proc_net_pktgen, dev_cmd_flowlen) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_flowlen_0, sizeof(dev_cmd_flowlen_0)); + EXPECT_EQ(len, sizeof(dev_cmd_flowlen_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_queue_map_min) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_queue_map_min_0, sizeof(dev_cmd_queue_map_min_0)); + EXPECT_EQ(len, sizeof(dev_cmd_queue_map_min_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_queue_map_max) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_queue_map_max_0, sizeof(dev_cmd_queue_map_max_0)); + EXPECT_EQ(len, sizeof(dev_cmd_queue_map_max_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_mpls) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_mpls_0, sizeof(dev_cmd_mpls_0)); + EXPECT_EQ(len, sizeof(dev_cmd_mpls_0)); + + len = write(self->dev_fd, dev_cmd_mpls_1, sizeof(dev_cmd_mpls_1)); + EXPECT_EQ(len, sizeof(dev_cmd_mpls_1)); + + len = write(self->dev_fd, dev_cmd_mpls_2, sizeof(dev_cmd_mpls_2)); + EXPECT_EQ(len, sizeof(dev_cmd_mpls_2)); + + len = write(self->dev_fd, dev_cmd_mpls_3, sizeof(dev_cmd_mpls_3)); + EXPECT_EQ(len, -1); + EXPECT_EQ(errno, E2BIG); +} + +TEST_F(proc_net_pktgen, dev_cmd_vlan_id) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_vlan_id_0, sizeof(dev_cmd_vlan_id_0)); + EXPECT_EQ(len, sizeof(dev_cmd_vlan_id_0)); + + len = write(self->dev_fd, dev_cmd_vlan_p_0, sizeof(dev_cmd_vlan_p_0)); + EXPECT_EQ(len, sizeof(dev_cmd_vlan_p_0)); + + len = write(self->dev_fd, dev_cmd_vlan_cfi_0, sizeof(dev_cmd_vlan_cfi_0)); + EXPECT_EQ(len, sizeof(dev_cmd_vlan_cfi_0)); + + len = write(self->dev_fd, dev_cmd_vlan_id_1, sizeof(dev_cmd_vlan_id_1)); + EXPECT_EQ(len, sizeof(dev_cmd_vlan_id_1)); +} + +TEST_F(proc_net_pktgen, dev_cmd_svlan_id) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_svlan_id_0, sizeof(dev_cmd_svlan_id_0)); + EXPECT_EQ(len, sizeof(dev_cmd_svlan_id_0)); + + len = write(self->dev_fd, dev_cmd_svlan_p_0, sizeof(dev_cmd_svlan_p_0)); + EXPECT_EQ(len, sizeof(dev_cmd_svlan_p_0)); + + len = write(self->dev_fd, dev_cmd_svlan_cfi_0, sizeof(dev_cmd_svlan_cfi_0)); + EXPECT_EQ(len, sizeof(dev_cmd_svlan_cfi_0)); + + len = write(self->dev_fd, dev_cmd_svlan_id_1, sizeof(dev_cmd_svlan_id_1)); + EXPECT_EQ(len, sizeof(dev_cmd_svlan_id_1)); +} + + +TEST_F(proc_net_pktgen, dev_cmd_tos) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_tos_0, sizeof(dev_cmd_tos_0)); + EXPECT_EQ(len, sizeof(dev_cmd_tos_0)); + + len = write(self->dev_fd, dev_cmd_tos_1, sizeof(dev_cmd_tos_1)); + EXPECT_EQ(len, sizeof(dev_cmd_tos_1)); + + len = write(self->dev_fd, dev_cmd_tos_2, sizeof(dev_cmd_tos_2)); + EXPECT_EQ(len, sizeof(dev_cmd_tos_2)); +} + + +TEST_F(proc_net_pktgen, dev_cmd_traffic_class) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_traffic_class_0, sizeof(dev_cmd_traffic_class_0)); + EXPECT_EQ(len, sizeof(dev_cmd_traffic_class_0)); +} + +TEST_F(proc_net_pktgen, dev_cmd_skb_priority) { + ssize_t len; + + len = write(self->dev_fd, dev_cmd_skb_priority_0, sizeof(dev_cmd_skb_priority_0)); + EXPECT_EQ(len, sizeof(dev_cmd_skb_priority_0)); +} + +TEST_HARNESS_MAIN