From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 94CB646364 for ; Fri, 7 Mar 2025 13:48:03 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8F2DB40E3F; Fri, 7 Mar 2025 13:48:03 +0100 (CET) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mails.dpdk.org (Postfix) with ESMTP id 6224840E30 for ; Fri, 7 Mar 2025 13:48:02 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1741351682; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9Ex/qh1uZ/MvK62gyFmbzvyigI2iyj16jshDOOzX6Gc=; b=DJpUXEkof4KCCulRUEtopFFEeapDmpMisjgLdnymHwnhnSerIjRle7j+VnwjpTeGjjGBSP afOpTKkhEJo4Y87EoxlTp/9K/ci20spMBrFlfnFX/zxhzZvWNswB7rbxKXiXU/uor4q4nm 8IFnOtwuY3zQCTgfdqOoVg+pOBpR4+I= Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-31-swDaZj0uMyOJhmVFyNOLlQ-1; Fri, 07 Mar 2025 07:47:58 -0500 X-MC-Unique: swDaZj0uMyOJhmVFyNOLlQ-1 X-Mimecast-MFC-AGG-ID: swDaZj0uMyOJhmVFyNOLlQ_1741351677 Received: from mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.15]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 8E7CB19560B3; Fri, 7 Mar 2025 12:47:57 +0000 (UTC) Received: from rh.Home (unknown [10.45.226.25]) by mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id C815C1956095; Fri, 7 Mar 2025 12:47:55 +0000 (UTC) From: Kevin Traynor To: Stephen Hemminger Cc: Huisong Li , dpdk stable Subject: patch 'app/testpmd: fix out-of-bound reference in offload config' has been queued to stable release 24.11.2 Date: Fri, 7 Mar 2025 12:46:44 +0000 Message-ID: <20250307124726.475001-11-ktraynor@redhat.com> In-Reply-To: <20250307124726.475001-1-ktraynor@redhat.com> References: <20250307124726.475001-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.15 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: XZTORdBmSEFEjRGEDhrixn_7MAuWWHs7FHJi951KUtQ_1741351677 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit content-type: text/plain; charset="US-ASCII"; x-default=true X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Hi, FYI, your patch has been queued to stable release 24.11.2 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 03/12/25. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable/commit/220244287b6705414f2bc0d7d4fd50d334f191e2 Thanks. Kevin --- >From 220244287b6705414f2bc0d7d4fd50d334f191e2 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Thu, 20 Feb 2025 12:44:26 -0800 Subject: [PATCH] app/testpmd: fix out-of-bound reference in offload config [ upstream commit 8f847023dd16cb6e5858756d7ec16c940ac6eee9 ] When configuring offloads, need to check the port id before indexing into the ports[] array. This can easily be done by moving the call to oh_dev_conf_get_print_err() to before the checks for port stopped. Fixes: c73a9071877a ("app/testpmd: add commands to test new offload API") Signed-off-by: Stephen Hemminger Acked-by: Huisong Li --- app/test-pmd/cmdline.c | 67 +++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 31 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 93c9fc402d..0f9b8e36f6 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -11512,5 +11512,5 @@ cmd_rx_offload_get_configuration_parsed( struct rte_eth_dev_info dev_info; portid_t port_id = res->port_id; - struct rte_port *port = &ports[port_id]; + struct rte_port *port; struct rte_eth_conf dev_conf; uint64_t port_offloads; @@ -11520,10 +11520,11 @@ cmd_rx_offload_get_configuration_parsed( int ret; + ret = eth_dev_conf_get_print_err(port_id, &dev_conf); + if (ret != 0) + return; + + port = &ports[port_id]; printf("Rx Offloading Configuration of port %d :\n", port_id); - ret = eth_dev_conf_get_print_err(port_id, &dev_conf); - if (ret != 0) - return; - port_offloads = dev_conf.rxmode.offloads; printf(" Port :"); @@ -11626,5 +11627,5 @@ config_port_rx_offload(portid_t port_id, char *name, bool on) { struct rte_eth_dev_info dev_info; - struct rte_port *port = &ports[port_id]; + struct rte_port *port; uint16_t nb_rx_queues; uint64_t offload; @@ -11632,4 +11633,9 @@ config_port_rx_offload(portid_t port_id, char *name, bool on) int ret; + ret = eth_dev_info_get_print_err(port_id, &dev_info); + if (ret != 0) + return; + + port = &ports[port_id]; if (port->port_status != RTE_PORT_STOPPED) { fprintf(stderr, @@ -11639,8 +11645,4 @@ config_port_rx_offload(portid_t port_id, char *name, bool on) } - ret = eth_dev_info_get_print_err(port_id, &dev_info); - if (ret != 0) - return; - if (!strcmp(name, "all")) { offload = dev_info.rx_offload_capa; @@ -11828,8 +11830,13 @@ cmd_config_per_queue_rx_offload_parsed(void *parsed_result, portid_t port_id = res->port_id; uint16_t queue_id = res->queue_id; - struct rte_port *port = &ports[port_id]; + struct rte_port *port; uint64_t offload; int ret; + ret = eth_dev_info_get_print_err(port_id, &dev_info); + if (ret != 0) + return; + + port = &ports[port_id]; if (port->port_status != RTE_PORT_STOPPED) { fprintf(stderr, @@ -11839,8 +11846,4 @@ cmd_config_per_queue_rx_offload_parsed(void *parsed_result, } - ret = eth_dev_info_get_print_err(port_id, &dev_info); - if (ret != 0) - return; - if (queue_id >= dev_info.nb_rx_queues) { fprintf(stderr, @@ -12030,5 +12033,5 @@ cmd_tx_offload_get_configuration_parsed( struct rte_eth_dev_info dev_info; portid_t port_id = res->port_id; - struct rte_port *port = &ports[port_id]; + struct rte_port *port; struct rte_eth_conf dev_conf; uint64_t port_offloads; @@ -12038,10 +12041,10 @@ cmd_tx_offload_get_configuration_parsed( int ret; + ret = eth_dev_conf_get_print_err(port_id, &dev_conf); + if (ret != 0) + return; + printf("Tx Offloading Configuration of port %d :\n", port_id); - - ret = eth_dev_conf_get_print_err(port_id, &dev_conf); - if (ret != 0) - return; - + port = &ports[port_id]; port_offloads = dev_conf.txmode.offloads; printf(" Port :"); @@ -12148,5 +12151,5 @@ config_port_tx_offload(portid_t port_id, char *name, bool on) { struct rte_eth_dev_info dev_info; - struct rte_port *port = &ports[port_id]; + struct rte_port *port; uint16_t nb_tx_queues; uint64_t offload; @@ -12154,4 +12157,9 @@ config_port_tx_offload(portid_t port_id, char *name, bool on) int ret; + ret = eth_dev_info_get_print_err(port_id, &dev_info); + if (ret != 0) + return; + + port = &ports[port_id]; if (port->port_status != RTE_PORT_STOPPED) { fprintf(stderr, @@ -12161,8 +12169,4 @@ config_port_tx_offload(portid_t port_id, char *name, bool on) } - ret = eth_dev_info_get_print_err(port_id, &dev_info); - if (ret != 0) - return; - if (!strcmp(name, "all")) { offload = dev_info.tx_offload_capa; @@ -12354,8 +12358,13 @@ cmd_config_per_queue_tx_offload_parsed(void *parsed_result, portid_t port_id = res->port_id; uint16_t queue_id = res->queue_id; - struct rte_port *port = &ports[port_id]; + struct rte_port *port; uint64_t offload; int ret; + ret = eth_dev_info_get_print_err(port_id, &dev_info); + if (ret != 0) + return; + + port = &ports[port_id]; if (port->port_status != RTE_PORT_STOPPED) { fprintf(stderr, @@ -12365,8 +12374,4 @@ cmd_config_per_queue_tx_offload_parsed(void *parsed_result, } - ret = eth_dev_info_get_print_err(port_id, &dev_info); - if (ret != 0) - return; - if (queue_id >= dev_info.nb_tx_queues) { fprintf(stderr, -- 2.48.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2025-03-07 11:02:57.311680947 +0000 +++ 0011-app-testpmd-fix-out-of-bound-reference-in-offload-co.patch 2025-03-07 11:02:56.848335604 +0000 @@ -1 +1 @@ -From 8f847023dd16cb6e5858756d7ec16c940ac6eee9 Mon Sep 17 00:00:00 2001 +From 220244287b6705414f2bc0d7d4fd50d334f191e2 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 8f847023dd16cb6e5858756d7ec16c940ac6eee9 ] + @@ -12 +13,0 @@ -Cc: stable@dpdk.org @@ -21 +22 @@ -index 6ca3eedb92..d4bb3ec998 100644 +index 93c9fc402d..0f9b8e36f6 100644 @@ -24 +25 @@ -@@ -11634,5 +11634,5 @@ cmd_rx_offload_get_configuration_parsed( +@@ -11512,5 +11512,5 @@ cmd_rx_offload_get_configuration_parsed( @@ -31 +32 @@ -@@ -11642,10 +11642,11 @@ cmd_rx_offload_get_configuration_parsed( +@@ -11520,10 +11520,11 @@ cmd_rx_offload_get_configuration_parsed( @@ -47 +48 @@ -@@ -11748,5 +11749,5 @@ config_port_rx_offload(portid_t port_id, char *name, bool on) +@@ -11626,5 +11627,5 @@ config_port_rx_offload(portid_t port_id, char *name, bool on) @@ -54 +55 @@ -@@ -11754,4 +11755,9 @@ config_port_rx_offload(portid_t port_id, char *name, bool on) +@@ -11632,4 +11633,9 @@ config_port_rx_offload(portid_t port_id, char *name, bool on) @@ -64 +65 @@ -@@ -11761,8 +11767,4 @@ config_port_rx_offload(portid_t port_id, char *name, bool on) +@@ -11639,8 +11645,4 @@ config_port_rx_offload(portid_t port_id, char *name, bool on) @@ -73 +74 @@ -@@ -11950,8 +11952,13 @@ cmd_config_per_queue_rx_offload_parsed(void *parsed_result, +@@ -11828,8 +11830,13 @@ cmd_config_per_queue_rx_offload_parsed(void *parsed_result, @@ -88 +89 @@ -@@ -11961,8 +11968,4 @@ cmd_config_per_queue_rx_offload_parsed(void *parsed_result, +@@ -11839,8 +11846,4 @@ cmd_config_per_queue_rx_offload_parsed(void *parsed_result, @@ -97 +98 @@ -@@ -12152,5 +12155,5 @@ cmd_tx_offload_get_configuration_parsed( +@@ -12030,5 +12033,5 @@ cmd_tx_offload_get_configuration_parsed( @@ -104 +105 @@ -@@ -12160,10 +12163,10 @@ cmd_tx_offload_get_configuration_parsed( +@@ -12038,10 +12041,10 @@ cmd_tx_offload_get_configuration_parsed( @@ -120 +121 @@ -@@ -12270,5 +12273,5 @@ config_port_tx_offload(portid_t port_id, char *name, bool on) +@@ -12148,5 +12151,5 @@ config_port_tx_offload(portid_t port_id, char *name, bool on) @@ -127 +128 @@ -@@ -12276,4 +12279,9 @@ config_port_tx_offload(portid_t port_id, char *name, bool on) +@@ -12154,4 +12157,9 @@ config_port_tx_offload(portid_t port_id, char *name, bool on) @@ -137 +138 @@ -@@ -12283,8 +12291,4 @@ config_port_tx_offload(portid_t port_id, char *name, bool on) +@@ -12161,8 +12169,4 @@ config_port_tx_offload(portid_t port_id, char *name, bool on) @@ -146 +147 @@ -@@ -12476,8 +12480,13 @@ cmd_config_per_queue_tx_offload_parsed(void *parsed_result, +@@ -12354,8 +12358,13 @@ cmd_config_per_queue_tx_offload_parsed(void *parsed_result, @@ -161 +162 @@ -@@ -12487,8 +12496,4 @@ cmd_config_per_queue_tx_offload_parsed(void *parsed_result, +@@ -12365,8 +12374,4 @@ cmd_config_per_queue_tx_offload_parsed(void *parsed_result,