BugLink: https://bugs.launchpad.net/bugs/1863019
[ Upstream commit
d27e2ca1166aefd54d9c48fb6647dee8115a5dfc ]
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: 67fea463fd87 ("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>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
bool offline = false;
u8 test_results = 0;
u8 test_mask = 0;
bool offline = false;
u8 test_results = 0;
u8 test_mask = 0;
if (!bp->num_tests || !BNXT_SINGLE_PF(bp))
return;
if (!bp->num_tests || !BNXT_SINGLE_PF(bp))
return;
}
bnxt_hwrm_phy_loopback(bp, false);
bnxt_half_close_nic(bp);
}
bnxt_hwrm_phy_loopback(bp, 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;
}
buf[BNXT_IRQ_TEST_IDX] = 1;
etest->flags |= ETH_TEST_FL_FAILED;
}