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 F1BD948A44 for ; Fri, 31 Oct 2025 15:35:22 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E9B6040150; Fri, 31 Oct 2025 15:35:22 +0100 (CET) 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 1A58C40653 for ; Fri, 31 Oct 2025 15:35:21 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1761921320; 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=qFM42E8eTQoakx1z3FTePe+HpTXovqjS9avwl0j2AJ4=; b=QxQh8MeBS3cv9IxzOqjTcKKBqVnyMPl7s33QYBGXx7yKX8Hrbh9FTsBgbvJQzTOGH8stX0 N5hzbZ/92icDgGd05GbV4EEu+026qJkxQAIxWpUzzI9YeRre6D+J+Yto5F49eauB+lNtml VVAe0oRJTVILTRGCyIzpL6NY+x76a8o= Received: from mx-prod-mc-05.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-664-Zvb1IetnPX6BoUhFn4G8jQ-1; Fri, 31 Oct 2025 10:35:19 -0400 X-MC-Unique: Zvb1IetnPX6BoUhFn4G8jQ-1 X-Mimecast-MFC-AGG-ID: Zvb1IetnPX6BoUhFn4G8jQ_1761921318 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 03BCA19560BF; Fri, 31 Oct 2025 14:35:18 +0000 (UTC) Received: from rh.redhat.com (unknown [10.44.32.50]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B52EC180057E; Fri, 31 Oct 2025 14:35:15 +0000 (UTC) From: Kevin Traynor To: David Marchand Cc: Bruce Richardson , Chengwen Feng , dpdk stable Subject: patch 'eal: fix plugin dir walk' has been queued to stable release 24.11.4 Date: Fri, 31 Oct 2025 14:32:04 +0000 Message-ID: <20251031143421.324432-2-ktraynor@redhat.com> In-Reply-To: <20251031143421.324432-1-ktraynor@redhat.com> References: <20251031143421.324432-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: RgJJkDVE9i_BNEJSTEg7j5k5zrJUWEBl11jr7O_BYbk_1761921318 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.4 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 11/05/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/26d3eae2a30f74cd1851a6a0b9ad2cf6572d2331 Thanks. Kevin --- >From 26d3eae2a30f74cd1851a6a0b9ad2cf6572d2331 Mon Sep 17 00:00:00 2001 From: David Marchand Date: Fri, 20 Dec 2024 09:34:31 +0100 Subject: [PATCH] eal: fix plugin dir walk [ upstream commit c32e203ee23473ccf3c8526d12e1c59f17c50eab ] For '.' and '..' directories (or any short file name), a out of bound issue occurs. Caught by UBSan: EAL: Detected shared linkage of DPDK ../lib/eal/common/eal_common_options.c:420:15: runtime error: index -2 out of bounds for type 'char[256]' #0 0x7f867eedf206 in eal_plugindir_init eal_common_options.c #1 0x7f867eede58a in eal_plugins_init (build/lib/librte_eal.so.25+0xde58a) (BuildId: e7e4a1935e4bacb51c82ab1a84098a27decf3b4c) #2 0x7f867efb8587 in rte_eal_init (build/lib/librte_eal.so.25+0x1b8587) (BuildId: e7e4a1935e4bacb51c82ab1a84098a27decf3b4c) #3 0x55b62360861e in main (/home/runner/work/dpdk/dpdk/build/app/dpdk-testpmd+0x9e061e) (BuildId: d821ec918612c83fad8b5ccb6cc518e66bee48cd) #4 0x7f8667429d8f in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16 #5 0x7f8667429e3f in __libc_start_main csu/../csu/libc-start.c:392:3 #6 0x55b622d9d444 in _start (/home/runner/work/dpdk/dpdk/build/app/dpdk-testpmd+0x175444) (BuildId: d821ec918612c83fad8b5ccb6cc518e66bee48cd) SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ../lib/eal/common/eal_common_options.c:420:15 in ../lib/eal/common/eal_common_options.c:421:15: runtime error: index 18446744073709551609 out of bounds for type 'char[256]' Fixes: c57f6e5c604a ("eal: fix plugin loading") Signed-off-by: David Marchand Acked-by: Bruce Richardson Acked-by: Chengwen Feng --- lib/eal/common/eal_common_options.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/eal/common/eal_common_options.c b/lib/eal/common/eal_common_options.c index 2a3408c0c1..6f1a9ffc56 100644 --- a/lib/eal/common/eal_common_options.c +++ b/lib/eal/common/eal_common_options.c @@ -396,10 +396,19 @@ eal_plugins_init(void) #else +static bool +ends_with(const char *str, const char *tail) +{ + size_t tail_len = strlen(tail); + size_t str_len = strlen(str); + + return str_len >= tail_len && strcmp(&str[str_len - tail_len], tail) == 0; +} + static int eal_plugindir_init(const char *path) { - DIR *d = NULL; struct dirent *dent = NULL; char sopath[PATH_MAX]; + DIR *d = NULL; if (path == NULL || *path == '\0') @@ -415,10 +424,6 @@ eal_plugindir_init(const char *path) while ((dent = readdir(d)) != NULL) { struct stat sb; - int nlen = strnlen(dent->d_name, sizeof(dent->d_name)); - /* check if name ends in .so or .so.ABI_VERSION */ - if (strcmp(&dent->d_name[nlen - 3], ".so") != 0 && - strcmp(&dent->d_name[nlen - 4 - strlen(ABI_VERSION)], - ".so."ABI_VERSION) != 0) + if (!ends_with(dent->d_name, ".so") && !ends_with(dent->d_name, ".so."ABI_VERSION)) continue; -- 2.51.0 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2025-10-31 13:53:52.384506249 +0000 +++ 0002-eal-fix-plugin-dir-walk.patch 2025-10-31 13:53:52.004523268 +0000 @@ -1 +1 @@ -From c32e203ee23473ccf3c8526d12e1c59f17c50eab Mon Sep 17 00:00:00 2001 +From 26d3eae2a30f74cd1851a6a0b9ad2cf6572d2331 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit c32e203ee23473ccf3c8526d12e1c59f17c50eab ] + @@ -39 +40,0 @@ -Cc: stable@dpdk.org @@ -49 +50 @@ -index 3169dd069f..2f91b96190 100644 +index 2a3408c0c1..6f1a9ffc56 100644 @@ -52 +53 @@ -@@ -400,10 +400,19 @@ eal_plugins_init(void) +@@ -396,10 +396,19 @@ eal_plugins_init(void) @@ -73 +74 @@ -@@ -419,10 +428,6 @@ eal_plugindir_init(const char *path) +@@ -415,10 +424,6 @@ eal_plugindir_init(const char *path)