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 ED48E46BF1 for ; Wed, 23 Jul 2025 15:11:09 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E526040B98; Wed, 23 Jul 2025 15:11:09 +0200 (CEST) Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) by mails.dpdk.org (Postfix) with ESMTP id B8FC340B98 for ; Wed, 23 Jul 2025 15:11:07 +0200 (CEST) Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-234fcadde3eso77802965ad.0 for ; Wed, 23 Jul 2025 06:11:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uetpeshawar-edu-pk.20230601.gappssmtp.com; s=20230601; t=1753276267; x=1753881067; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=e1Fn+BpV/lBpkBNymNKkD0FjlFvW9o40VVxaZUaxgWQ=; b=oO0l0k69lR2tGB34dPkHWvbpVaCeC1ss0Ky8ze4lLs6+yQl2ksIQjhatGFQ8lLyuAW 6+6z3tdz4OhQAevSTo/keDJoTMNBJO7m+TyhSHcXeNFtYU9X+CLrIQ8rkyqAgd4Sm+qW fMvS5IsOJGNF9NlBErJ8tbhuegiDt//va41cUiivMh1CsW7azmjpn2bK6lxy+YVBP/rA mfBVNNJD9XDtbEZv/svP8CC2CakHtJTiOhvpiWFYyvRXKjcKeqWzDO9VkoUSJqwLPaVO f79EHTJqZVkjbDiux/Z6jZI+PtKe8nRBOD+/JJnsvg07biRSi89gy1HDekomASnSniKd 97GQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753276267; x=1753881067; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=e1Fn+BpV/lBpkBNymNKkD0FjlFvW9o40VVxaZUaxgWQ=; b=tOow+NJQvtvusGQ7aMRYSDT53HR7tmoRQRbFaMCPNZOItNT/nAem/k7NWYG4XrkSLd VaA4HVz+i3P86fhNSB2Iq8+Z2zv4u69VjWtpmcFdqZQN+0jSAonGt9ET5xcDrEnfe43I uqK9AmwZ2DBnkWxtahOus9bLlmLeW/tMJfbBbmrPDXwHUBJlJBU5uPm7MB7jkR3wngxB iMBDX3tm8LDi85TID+1GtatBp2be8QzhQGR9MH/3n0Uwf3c3JiTx0PCLUJd0AupLhHxB CCiST4g898hZMnTdnVzN/X0jMhTLM64mJdX0212ykQ8D3zZ7wezAv3lziytQrQJZcKDp 82UA== X-Forwarded-Encrypted: i=1; AJvYcCVzPeJ6aVd/W/AMDCLMxH3i766Did3eo2RrbN/XM307mUer+CwTY0xNf8JAhVQKZzTM7LNuGBs=@dpdk.org X-Gm-Message-State: AOJu0YxyZkcTgUBK9Sx4keVD0zKbj6xpueoO7rNgWR8NfjTnbH5JUYbK nvZNWN3L/1hrerzZFEea1KNAyZtOhotkovMaDlENEGVWjjnvrByKO89WshUC7Z0UaSk= X-Gm-Gg: ASbGncsprQulR1zn9etVYlDVOKvnWOdEkl7IOA3ef+rK2y802aQiP2QKpsrlEb2wxiz xaXQtAZNJgpS/W/VvEohtk9VPPzsH22Mgko0ktrRqWijWX2E3NHWGAJ+MjoXuYwxJ3dEbCRscB0 QGMFYpAkc3p0uJzRa7Pz/B0ayLWr0wIZe7FRg2G7WTwalYcRhcnaajuANEKFkM+2e2CcwjgbQt3 F8rNIRm2R0kyAEJMW6J1YrctEGaGk4KOaaMgjhrmSnTq+Kg8aoTiIZO01SCslYFl8D5BEsrUPGl 6V2aRBn+OBGWyOlep8BXSlE/ST4HEkY5sEZ0KnSpgewjBJiOLRPlAUoOxHVw5Phv3NLgRphIfOc 1HbaCrdR4yo8KcpPQVSx0/E46XXmiaOisi1j2xHT2UgBkm1Q8 X-Google-Smtp-Source: AGHT+IEz92xfZNQNAbfsfwzYYsaT1RswUvqn7AyrIowSs5s1GhzUtFN5AGNsj5pNlnpWpqDasjCdqw== X-Received: by 2002:a17:902:d603:b0:23f:904b:a748 with SMTP id d9443c01a7336-23f9813e760mr40286575ad.20.1753276266840; Wed, 23 Jul 2025 06:11:06 -0700 (PDT) Received: from localhost.localdomain ([64.62.143.197]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-23e3b6d23cfsm96232615ad.135.2025.07.23.06.11.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Jul 2025 06:11:05 -0700 (PDT) From: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk> To: stephen@networkplumber.org, thomas@monjalon.net, ferruh.yigit@amd.com, andrew.rybchenko@oktetlabs.ru Cc: dev@dpdk.org, stable@dpdk.org, Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk> Subject: [PATCH] [PATCH v3] lib/ethdev: fix segfault in secondary process by validating dev_private pointer Date: Wed, 23 Jul 2025 09:10:49 -0400 Message-ID: <20250723131049.1703172-1-14pwcse1224@uetpeshawar.edu.pk> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250723045022.1580829-1-14pwcse1224@uetpeshawar.edu.pk> References: <20250723045022.1580829-1-14pwcse1224@uetpeshawar.edu.pk> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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 In secondary processes, directly accessing 'dev->data->dev_private' can cause a segmentation fault if the primary process has exited or if the shared memory is no longer accessible. Secondary application not only breaking on device closing, but also getting segfault when we do "show device info all" from secondary after primary closes. This patch adds safety checks while using rte_mem_virt2phy(), with an unlikely() branch hint to minimize performance impact in the fast path. This ensures 'dev_private' is still valid before accessing it. Fixes: bdad90d12ec8 ("ethdev: change device info get callback to return int") Cc: stable@dpdk.org Signed-off-by: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk> --- lib/ethdev/rte_ethdev.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c index dd7c00bc94..343e156a4f 100644 --- a/lib/ethdev/rte_ethdev.c +++ b/lib/ethdev/rte_ethdev.c @@ -4079,6 +4079,13 @@ rte_eth_dev_info_get(uint16_t port_id, struct rte_eth_dev_info *dev_info) if (dev->dev_ops->dev_infos_get == NULL) return -ENOTSUP; + if (rte_eal_process_type() == RTE_PROC_SECONDARY && + unlikely(rte_mem_virt2phy(dev->data->dev_private) == RTE_BAD_PHYS_ADDR)) { + RTE_ETHDEV_LOG_LINE(ERR, + "Secondary: dev_private not accessible (primary exited?)"); + rte_errno = ENODEV; + return -rte_errno; + } diag = dev->dev_ops->dev_infos_get(dev, dev_info); if (diag != 0) { /* Cleanup already filled in device information */ @@ -4307,7 +4314,13 @@ rte_eth_macaddr_get(uint16_t port_id, struct rte_ether_addr *mac_addr) port_id); return -EINVAL; } - + if (rte_eal_process_type() == RTE_PROC_SECONDARY && + (dev->data->mac_addrs == NULL)) { + RTE_ETHDEV_LOG_LINE(ERR, + "Secondary: dev_private not accessible (primary exited?)"); + rte_errno = ENODEV; + return -rte_errno; + } rte_ether_addr_copy(&dev->data->mac_addrs[0], mac_addr); rte_eth_trace_macaddr_get(port_id, mac_addr); -- 2.43.0