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 EA3FDA0555 for ; Thu, 9 Jun 2022 13:37:26 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 811C24281C; Thu, 9 Jun 2022 13:37:26 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id 69DD940220 for ; Thu, 9 Jun 2022 13:37:25 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1654774644; 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=xuVXaSfCCyqFoM4q+P3ew1ojgsmf0KdOnNuhojceS0Y=; b=AeI5POvn5zhJRMXabqT7H1R88Uqtpdk0NS6vZYSUlxZIaUYEqpBqmiRcjc+PlEfJ8YYvNl yEx2Kr73zmPxQjS2Z2c8XL/tsgdKFXfDgIaAv4xGzxk7jmdsgph5qoQ7y9ESM0c1xGHpEn EZQqHd9QhyfJ/VoYkIN15wEWDOexvME= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-292-a7-ZUMGYNOKXsyQfwQYg4Q-1; Thu, 09 Jun 2022 07:37:24 -0400 X-MC-Unique: a7-ZUMGYNOKXsyQfwQYg4Q-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 9E48085A585; Thu, 9 Jun 2022 11:37:23 +0000 (UTC) Received: from rh.redhat.com (unknown [10.39.195.82]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9AA8E1730C; Thu, 9 Jun 2022 11:37:22 +0000 (UTC) From: Kevin Traynor To: Cristian Dumitrescu Cc: Venkata Suresh Kumar P , Yogesh Jangra , dpdk stable Subject: patch 'pipeline: fix emit instruction for invalid headers' has been queued to stable release 21.11.2 Date: Thu, 9 Jun 2022 12:35:57 +0100 Message-Id: <20220609113701.386938-10-ktraynor@redhat.com> In-Reply-To: <20220609113701.386938-1-ktraynor@redhat.com> References: <20220609113701.386938-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=ktraynor@redhat.com X-Mimecast-Spam-Score: 0 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 21.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 06/13/22. 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/bf68ce756dcb5287d636a8fbda8d82903d09ab85 Thanks. Kevin --- >From bf68ce756dcb5287d636a8fbda8d82903d09ab85 Mon Sep 17 00:00:00 2001 From: Cristian Dumitrescu Date: Wed, 27 Apr 2022 22:56:52 +0100 Subject: [PATCH] pipeline: fix emit instruction for invalid headers [ upstream commit 775be5b5399da981100f77988b100613ce44a9d5 ] Fix the emit instruction for the pathological case of all headers to be emitted being invalid. In this case, the for loop was essentially skipped and the last emitted header (or an invalid memory location) getting corrupted by setting its size to 0 through the assignment to ho->n_bytes right after the for loop. Fixes: d60dbdc88a3e ("pipeline: create inline functions for emit instruction") Signed-off-by: Cristian Dumitrescu Signed-off-by: Venkata Suresh Kumar P Signed-off-by: Yogesh Jangra --- lib/pipeline/rte_swx_pipeline_internal.h | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/lib/pipeline/rte_swx_pipeline_internal.h b/lib/pipeline/rte_swx_pipeline_internal.h index fa944c95f2..c8fa978580 100644 --- a/lib/pipeline/rte_swx_pipeline_internal.h +++ b/lib/pipeline/rte_swx_pipeline_internal.h @@ -1821,7 +1821,7 @@ __instr_hdr_emit_many_exec(struct rte_swx_pipeline *p __rte_unused, uint64_t valid_headers = t->valid_headers; uint32_t n_headers_out = t->n_headers_out; - struct header_out_runtime *ho = &t->headers_out[n_headers_out - 1]; + struct header_out_runtime *ho = NULL; uint8_t *ho_ptr = NULL; - uint32_t ho_nbytes = 0, first = 1, i; + uint32_t ho_nbytes = 0, i; for (i = 0; i < n_emit; i++) { @@ -1835,16 +1835,19 @@ __instr_hdr_emit_many_exec(struct rte_swx_pipeline *p __rte_unused, uint8_t *hi_ptr = t->structs[struct_id]; - if (!MASK64_BIT_GET(valid_headers, header_id)) + if (!MASK64_BIT_GET(valid_headers, header_id)) { + TRACE("[Thread %2u]: emit header %u (invalid)\n", + p->thread_id, + header_id); + continue; + } - TRACE("[Thread %2u]: emit header %u\n", + TRACE("[Thread %2u]: emit header %u (valid)\n", p->thread_id, header_id); /* Headers. */ - if (first) { - first = 0; - - if (!t->n_headers_out) { + if (!ho) { + if (!n_headers_out) { ho = &t->headers_out[0]; @@ -1859,4 +1862,6 @@ __instr_hdr_emit_many_exec(struct rte_swx_pipeline *p __rte_unused, continue; } else { + ho = &t->headers_out[n_headers_out - 1]; + ho_ptr = ho->ptr; ho_nbytes = ho->n_bytes; @@ -1880,5 +1885,6 @@ __instr_hdr_emit_many_exec(struct rte_swx_pipeline *p __rte_unused, } - ho->n_bytes = ho_nbytes; + if (ho) + ho->n_bytes = ho_nbytes; t->n_headers_out = n_headers_out; } -- 2.34.3 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2022-06-09 12:34:30.013050823 +0100 +++ 0010-pipeline-fix-emit-instruction-for-invalid-headers.patch 2022-06-09 12:34:29.617980422 +0100 @@ -1 +1 @@ -From 775be5b5399da981100f77988b100613ce44a9d5 Mon Sep 17 00:00:00 2001 +From bf68ce756dcb5287d636a8fbda8d82903d09ab85 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 775be5b5399da981100f77988b100613ce44a9d5 ] + @@ -13 +14,0 @@ -Cc: stable@dpdk.org @@ -23 +24 @@ -index da3e88bfa8..8d932993fe 100644 +index fa944c95f2..c8fa978580 100644 @@ -26 +27 @@ -@@ -1841,7 +1841,7 @@ __instr_hdr_emit_many_exec(struct rte_swx_pipeline *p __rte_unused, +@@ -1821,7 +1821,7 @@ __instr_hdr_emit_many_exec(struct rte_swx_pipeline *p __rte_unused, @@ -36 +37 @@ -@@ -1855,16 +1855,19 @@ __instr_hdr_emit_many_exec(struct rte_swx_pipeline *p __rte_unused, +@@ -1835,16 +1835,19 @@ __instr_hdr_emit_many_exec(struct rte_swx_pipeline *p __rte_unused, @@ -62 +63 @@ -@@ -1879,4 +1882,6 @@ __instr_hdr_emit_many_exec(struct rte_swx_pipeline *p __rte_unused, +@@ -1859,4 +1862,6 @@ __instr_hdr_emit_many_exec(struct rte_swx_pipeline *p __rte_unused, @@ -69 +70 @@ -@@ -1900,5 +1905,6 @@ __instr_hdr_emit_many_exec(struct rte_swx_pipeline *p __rte_unused, +@@ -1880,5 +1885,6 @@ __instr_hdr_emit_many_exec(struct rte_swx_pipeline *p __rte_unused,