From: Stephen Hemminger <stephen@networkplumber.org>
To: Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk>
Cc: Ivan Malov <ivan.malov@arknetworks.am>,
Thomas Monjalon <thomas@monjalon.net>,
Ferruh Yigit <ferruh.yigit@amd.com>,
Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,
dev@dpdk.org, dpdk stable <stable@dpdk.org>
Subject: Re: [PATCH] [PATCH v3] lib/ethdev: fix segfault in secondary process by validating dev_private pointer
Date: Wed, 23 Jul 2025 07:22:16 -0700 [thread overview]
Message-ID: <20250723072216.5a34b44a@hermes.local> (raw)
In-Reply-To: <CA++2-x6bEQ+rjaddbyQLVTZTpy_4kUn12jmpXew9T=b0BjqSdA@mail.gmail.com>
On Wed, 23 Jul 2025 18:34:04 +0500
Khadem Ullah <14pwcse1224@uetpeshawar.edu.pk> wrote:
> Hi Ivan, agree. I think we can atleast currently guard all the known
> crashes.
>
> Sure, I will check the macro and get back to you.
>
> Thank you!
>
> On Wed, Jul 23, 2025, 18:19 Ivan Malov <ivan.malov@arknetworks.am> wrote:
>
> > Hi Khadem,
> >
> > On Wed, 23 Jul 2025, Khadem Ullah wrote:
> >
> > > 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);
> >
> > I see one more API has been augmented with the check. But community
> > members may
> > still argue this is not robust, as many other APIs will also fail. So,
> > even if
> > the task was to augment as many APIs as possible with the check, then the
> > check
> > would still be required to be factorised/generalised somehow. What do you
> > think?
> >
> > Please also note that there are already macro invocations in many of these
> > APIs,
> > for example, RTE_ETH_VALID_PORTID_OR_ERR_RET. Could be convenient.
> >
> > Thank you.
> >
> > > --
> > > 2.43.0
> > >
> > >
> >
No top posting.
How are you monitoring the primary? Lets fix that
next prev parent reply other threads:[~2025-07-23 14:22 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-22 11:54 [PATCH] lib/ethdev: fix segfault in secondary process by validating dev_private pointer Khadem Ullah
2025-07-22 13:39 ` Stephen Hemminger
2025-07-22 14:30 ` Khadem Ullah
2025-07-22 15:42 ` Stephen Hemminger
2025-07-22 16:01 ` Khadem Ullah
2025-07-22 16:13 ` Bruce Richardson
2025-07-22 17:04 ` Khadem Ullah
2025-07-22 17:38 ` Stephen Hemminger
2025-07-22 17:53 ` Khadem Ullah
2025-07-22 18:21 ` Stephen Hemminger
2025-07-22 19:03 ` Khadem Ullah
2025-07-22 19:05 ` Ivan Malov
2025-07-22 22:28 ` Stephen Hemminger
2025-07-23 4:29 ` Khadem Ullah
2025-07-23 4:50 ` [PATCH v2] " Khadem Ullah
2025-07-23 12:19 ` Khadem Ullah
2025-07-23 13:13 ` Khadem Ullah
2025-07-23 13:24 ` Ivan Malov
2025-07-23 13:26 ` Khadem Ullah
2025-07-23 13:31 ` Ivan Malov
2025-07-23 13:10 ` [PATCH] [PATCH v3] " Khadem Ullah
2025-07-23 13:19 ` Ivan Malov
2025-07-23 13:34 ` Khadem Ullah
2025-07-23 14:22 ` Stephen Hemminger [this message]
2025-07-24 5:49 ` Khadem Ullah
2025-07-25 13:00 ` Khadem Ullah
2025-07-25 12:55 ` [PATCH] [PATCH v4] " Khadem Ullah
2025-07-28 21:45 ` Stephen Hemminger
2025-07-29 5:42 ` Khadem Ullah
2025-07-29 21:34 ` Stephen Hemminger
2025-07-30 5:07 ` Khadem Ullah
2025-08-08 3:49 ` Varghese, Vipin
2025-08-08 15:32 ` Stephen Hemminger
2025-08-11 10:19 ` Varghese, Vipin
2025-08-11 10:28 ` Khadem Ullah
2025-08-11 10:39 ` Varghese, Vipin
2025-07-29 6:39 ` [PATCH] app/testpmd: fix segfault in secondary process by monitoring primary Khadem Ullah
2025-07-29 6:39 ` [PATCH] [PATCH v4] lib/ethdev: fix segfault in secondary process by validating dev_private pointer Khadem Ullah
2025-07-29 6:39 ` [PATCH] [PATCH v5] app/testpmd: fix segfault in secondary process by monitoring primary Khadem Ullah
2025-07-29 14:48 ` Stephen Hemminger
2025-07-29 21:48 ` Stephen Hemminger
2025-07-30 5:24 ` Khadem Ullah
2025-08-08 3:44 ` Varghese, Vipin
2025-08-08 16:17 ` Stephen Hemminger
2025-08-11 10:23 ` Varghese, Vipin
2025-08-11 10:27 ` Khadem Ullah
2025-07-30 5:56 ` [PATCH] app/testpmd: monitor state of primary process when using secondary Khadem Ullah
2025-07-30 6:08 ` [PATCH v6] " Khadem Ullah
2025-08-01 22:50 ` Stephen Hemminger
2025-08-04 7:54 ` [PATCH v7] " Khadem Ullah
2025-08-04 11:33 ` Khadem Ullah
2025-08-04 15:44 ` Stephen Hemminger
2025-08-05 0:50 ` fengchengwen
2025-08-08 3:23 ` Varghese, Vipin
2025-08-08 5:44 ` Khadem Ullah
2025-08-08 10:59 ` Varghese, Vipin
2025-08-08 11:49 ` Khadem Ullah
2025-08-08 16:49 ` Stephen Hemminger
2025-08-08 17:01 ` Khadem Ullah
2025-08-11 10:37 ` Varghese, Vipin
2025-08-11 11:14 ` Khadem Ullah
2025-08-11 11:34 ` Varghese, Vipin
2025-08-11 11:55 ` Khadem Ullah
2025-08-11 14:44 ` Varghese, Vipin
2025-08-11 17:11 ` Khadem Ullah
2025-08-11 10:30 ` Varghese, Vipin
2025-08-11 10:51 ` Khadem Ullah
2025-08-11 11:07 ` Varghese, Vipin
2025-08-08 15:28 ` Stephen Hemminger
2025-08-08 15:50 ` Khadem Ullah
2025-08-08 16:10 ` Stephen Hemminger
2025-09-15 8:10 ` [PATCH v3] app/testpmd: stop secondary process fwd_lcores during primary teardown Khadem Ullah
2025-09-15 9:29 ` Khadem Ullah
2025-09-15 10:23 ` Khadem Ullah
2025-09-15 11:25 ` Khadem Ullah
2025-09-15 15:43 ` Stephen Hemminger
2025-09-17 11:36 ` [PATCH v4] " Khadem Ullah
2025-09-17 20:54 ` Stephen Hemminger
2025-09-18 6:47 ` [PATCH v5] " Khadem Ullah
2025-09-18 15:08 ` Stephen Hemminger
2025-09-18 16:45 ` Stephen Hemminger
2025-07-23 14:21 ` [PATCH v2] lib/ethdev: fix segfault in secondary process by validating dev_private pointer Stephen Hemminger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250723072216.5a34b44a@hermes.local \
--to=stephen@networkplumber.org \
--cc=14pwcse1224@uetpeshawar.edu.pk \
--cc=andrew.rybchenko@oktetlabs.ru \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@amd.com \
--cc=ivan.malov@arknetworks.am \
--cc=stable@dpdk.org \
--cc=thomas@monjalon.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.