DPDK patches and discussions
 help / color / mirror / Atom feed
From: Gaetan Rivet <grive@u256.net>
To: dev@dpdk.org
Subject: [dpdk-dev] [PATCH v1 1/3] net/failsafe: avoid crash on malformed eth_dev
Date: Tue,  5 May 2020 21:10:29 +0200	[thread overview]
Message-ID: <16944acc809c06be57c5a489ee7143657c4d8c6f.1588705694.git.grive@u256.net> (raw)
In-Reply-To: <cover.1588705694.git.grive@u256.net>

Some PMD do not respect the eth_dev API when allocating their
rte_eth_dev. As a result, on device add event resulting from
rte_eth_dev_probing_finish() call, the eth_dev processed is incomplete.

The segfault is a good way to focus the developer on the issue, but does
not inspire confidence. Instead, warn the user of the error repeatedly.

The failsafe PMD can warn of the issue and continue. It will repeatedly
attempt to initialize the failed port and complain about it, which
should result in the same developer focus but with less crashing.

Signed-off-by: Gaetan Rivet <grive@u256.net>
---
 drivers/net/failsafe/failsafe_ether.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/net/failsafe/failsafe_ether.c b/drivers/net/failsafe/failsafe_ether.c
index 93deacd13..2b748bd8b 100644
--- a/drivers/net/failsafe/failsafe_ether.c
+++ b/drivers/net/failsafe/failsafe_ether.c
@@ -623,6 +623,11 @@ failsafe_eth_new_event_callback(uint16_t port_id,
 	FOREACH_SUBDEV_STATE(sdev, i, fs_dev, DEV_PARSED) {
 		if (sdev->state >= DEV_PROBED)
 			continue;
+		if (dev->device == NULL) {
+			WARN("Trying to probe malformed device %s.\n",
+			     sdev->devargs.name);
+			continue;
+		}
 		if (strcmp(sdev->devargs.name, dev->device->name) != 0)
 			continue;
 		rte_eth_dev_owner_set(port_id, &PRIV(fs_dev)->my_owner);
-- 
2.26.2


  reply	other threads:[~2020-05-05 19:10 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-27 10:44 [dpdk-dev] [PATCH] net/failsafe: fix fd leak wangyunjian
2020-04-27 11:12 ` Gaëtan Rivet
2020-04-27 16:55   ` [dpdk-dev] [dpdk-stable] " Ferruh Yigit
2020-05-03 11:33     ` Ali Alnubani
2020-05-04 16:22       ` Gaëtan Rivet
2020-05-04 16:28         ` Stephen Hemminger
2020-05-05  9:47           ` Ali Alnubani
2020-05-05  9:14         ` Ali Alnubani
2020-05-05 18:35           ` Gaëtan Rivet
2020-05-05 19:10       ` [dpdk-dev] [PATCH v1 0/3] failsafe & ring fixes Gaetan Rivet
2020-05-05 19:10         ` Gaetan Rivet [this message]
2020-05-06 17:16           ` [dpdk-dev] [PATCH v1 1/3] net/failsafe: avoid crash on malformed eth_dev Ferruh Yigit
2020-05-05 19:10         ` [dpdk-dev] [PATCH v1 2/3] net/ring: fix eth_dev device pointer on allocation Gaetan Rivet
2020-05-06 11:48           ` Ferruh Yigit
2020-05-06 12:33             ` Gaëtan Rivet
2020-05-06 13:43               ` [dpdk-dev] [dpdk-stable] " Ferruh Yigit
2020-05-06 17:32                 ` Gaëtan Rivet
2020-05-06 18:09                   ` [dpdk-dev] [PATCH v2] " Gaetan Rivet
2020-05-08 11:00                     ` Ferruh Yigit
2020-05-11 16:54                       ` Ferruh Yigit
2020-05-05 19:10         ` [dpdk-dev] [PATCH v1 3/3] net/failsafe: fix default service proxy state Gaetan Rivet
2020-05-06  8:58           ` Ali Alnubani
2020-05-06 17:16           ` Ferruh Yigit

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=16944acc809c06be57c5a489ee7143657c4d8c6f.1588705694.git.grive@u256.net \
    --to=grive@u256.net \
    --cc=dev@dpdk.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).