[2/2] net/iavf: fix crash on app exit on FreeBSD

Message ID 20250310131116.557117-2-bruce.richardson@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Bruce Richardson
Headers
Series [1/2] net/iavf: fix missing check for interrupt errors |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/loongarch-compilation success Compilation OK
ci/loongarch-unit-testing success Unit Testing PASS
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/github-robot: build success github build: passed
ci/iol-mellanox-Performance success Performance Testing PASS
ci/intel-Functional success Functional PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-sample-apps-testing success Testing PASS
ci/iol-unit-arm64-testing success Testing PASS
ci/iol-abi-testing success Testing PASS
ci/iol-unit-amd64-testing success Testing PASS
ci/iol-compile-amd64-testing success Testing PASS
ci/iol-compile-arm64-testing success Testing PASS
ci/iol-marvell-Functional success Functional Testing PASS

Commit Message

Bruce Richardson March 10, 2025, 1:11 p.m. UTC
With the fallback interrupt path now enabled on FreeBSD there are
segmentation faults on app exit, due to the alarm interrupt trying to
access invalid pointers.  Add checks for null to fix these crashes.

Fixes: cd3b124955d4 ("net/iavf: enable interrupt polling")
Cc: stable@dpdk.org

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 drivers/net/intel/iavf/iavf_ethdev.c | 3 +++
 1 file changed, 3 insertions(+)
  

Comments

Medvedkin, Vladimir March 18, 2025, 12:35 p.m. UTC | #1
Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>

On 10/03/2025 13:11, Bruce Richardson wrote:
> With the fallback interrupt path now enabled on FreeBSD there are
> segmentation faults on app exit, due to the alarm interrupt trying to
> access invalid pointers.  Add checks for null to fix these crashes.
>
> Fixes: cd3b124955d4 ("net/iavf: enable interrupt polling")
> Cc: stable@dpdk.org
>
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
>   drivers/net/intel/iavf/iavf_ethdev.c | 3 +++
>   1 file changed, 3 insertions(+)
>
> diff --git a/drivers/net/intel/iavf/iavf_ethdev.c b/drivers/net/intel/iavf/iavf_ethdev.c
> index 1ab84b0bfc..2335746f04 100644
> --- a/drivers/net/intel/iavf/iavf_ethdev.c
> +++ b/drivers/net/intel/iavf/iavf_ethdev.c
> @@ -2698,6 +2698,9 @@ void
>   iavf_dev_alarm_handler(void *param)
>   {
>   	struct rte_eth_dev *dev = (struct rte_eth_dev *)param;
> +	if (dev == NULL || dev->data == NULL || dev->data->dev_private == NULL)
> +		return;
> +
>   	struct iavf_hw *hw = IAVF_DEV_PRIVATE_TO_HW(dev->data->dev_private);
>   	uint32_t icr0;
>
  

Patch

diff --git a/drivers/net/intel/iavf/iavf_ethdev.c b/drivers/net/intel/iavf/iavf_ethdev.c
index 1ab84b0bfc..2335746f04 100644
--- a/drivers/net/intel/iavf/iavf_ethdev.c
+++ b/drivers/net/intel/iavf/iavf_ethdev.c
@@ -2698,6 +2698,9 @@  void
 iavf_dev_alarm_handler(void *param)
 {
 	struct rte_eth_dev *dev = (struct rte_eth_dev *)param;
+	if (dev == NULL || dev->data == NULL || dev->data->dev_private == NULL)
+		return;
+
 	struct iavf_hw *hw = IAVF_DEV_PRIVATE_TO_HW(dev->data->dev_private);
 	uint32_t icr0;