mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-10 04:48:04 +09:00
bnxt_en: Fix ethtool selftest crash under error conditions.
[ Upstream commitd27e2ca116] After ethtool loopback packet tests, we re-open the nic for the next IRQ test. If the open fails, we must not proceed with the IRQ test or we will crash with NULL pointer dereference. Fix it by checking the bnxt_open_nic() return code before proceeding. Reported-by: Somasundaram Krishnasamy <somasundaram.krishnasamy@oracle.com> Fixes:67fea463fd("bnxt_en: Add interrupt test to ethtool -t selftest.") Signed-off-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
fde68698dd
commit
f542dad28e
@@ -2600,7 +2600,7 @@ static void bnxt_self_test(struct net_device *dev, struct ethtool_test *etest,
|
||||
bool offline = false;
|
||||
u8 test_results = 0;
|
||||
u8 test_mask = 0;
|
||||
int rc, i;
|
||||
int rc = 0, i;
|
||||
|
||||
if (!bp->num_tests || !BNXT_SINGLE_PF(bp))
|
||||
return;
|
||||
@@ -2671,9 +2671,9 @@ static void bnxt_self_test(struct net_device *dev, struct ethtool_test *etest,
|
||||
}
|
||||
bnxt_hwrm_phy_loopback(bp, false, false);
|
||||
bnxt_half_close_nic(bp);
|
||||
bnxt_open_nic(bp, false, true);
|
||||
rc = bnxt_open_nic(bp, false, true);
|
||||
}
|
||||
if (bnxt_test_irq(bp)) {
|
||||
if (rc || bnxt_test_irq(bp)) {
|
||||
buf[BNXT_IRQ_TEST_IDX] = 1;
|
||||
etest->flags |= ETH_TEST_FL_FAILED;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user