From 94a6f2def20486d80df2e289ae327eb2a7932209 Mon Sep 17 00:00:00 2001 From: Gaetan Rivet Date: Tue, 5 May 2020 21:10:29 +0200 Subject: [PATCH] net/failsafe: avoid crash on malformed ethdev 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 --- 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 93deacd134..2b748bd8b4 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.20.1