From b3f8a569e76b94e75f9a67390704f885028db1bf Mon Sep 17 00:00:00 2001
From: Rohit Raj <rohit.raj@nxp.com>
Date: Mon, 16 Aug 2021 10:36:12 +0530
Subject: [PATCH] fsl_usdpaa: fix get link status crash

Fix crash observed in VSP while trying to get link status when link is
down from kernel.

Signed-off-by: Rohit Raj <rohit.raj@nxp.com>
DPDK-3239
---
 drivers/staging/fsl_qbman/fsl_usdpaa.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/fsl_qbman/fsl_usdpaa.c b/drivers/staging/fsl_qbman/fsl_usdpaa.c
index 9a9e7befa9bde1..8ad5d74dca73ed 100644
--- a/drivers/staging/fsl_qbman/fsl_usdpaa.c
+++ b/drivers/staging/fsl_qbman/fsl_usdpaa.c
@@ -1849,9 +1849,13 @@ ioctl_usdpaa_get_link_status(struct usdpaa_ioctl_link_status_args *input)
 	if (net_dev == NULL)
 		return -ENODEV;
 
-	input->link_status = netif_carrier_ok(net_dev);
-	input->link_autoneg = net_dev->phydev->autoneg;
-	input->link_duplex = net_dev->phydev->duplex;
+	if (net_dev->phydev == NULL) { /* Interface is down from kernel */
+		input->link_status = ETH_LINK_DOWN;
+	} else {
+		input->link_status = netif_carrier_ok(net_dev);
+		input->link_autoneg = net_dev->phydev->autoneg;
+		input->link_duplex = net_dev->phydev->duplex;
+	}
 
 	if (input->link_status)
 		input->link_speed = net_dev->phydev->speed;
-- 
GitLab