Current unwinding code on error paths of ice_devlink_reinit_up() and
ice_probe() have manual call to ice_deinit_hw() (which is good, as there
is also manual call to ice_hw_init() there), which is then duplicated
(and was prior current series) in ice_deinit_dev().

Fix the above by removing ice_deinit_hw() from ice_deinit_dev().
Add a (now missing) call in ice_remove().

Reported-by: Jacob Keller <[email protected]>
Link: 
https://patchwork.ozlabs.org/project/intel-wired-lan/patch/[email protected]
Fixes: 4d3f59bfa2cd ("ice: split ice_init_hw() out from ice_init_dev()")
Signed-off-by: Przemek Kitszel <[email protected]>
---
This series obsoletes patch by Jake Link:ed above; already removed from our
dev-queue
---
 drivers/net/ethernet/intel/ice/ice_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_main.c 
b/drivers/net/ethernet/intel/ice/ice_main.c
index c169134beb04..6b197d44f56d 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -4815,7 +4815,6 @@ int ice_init_dev(struct ice_pf *pf)
 
 void ice_deinit_dev(struct ice_pf *pf)
 {
-       ice_deinit_hw(&pf->hw);
        ice_service_task_stop(pf);
 
        /* Service task is already stopped, so call reset directly. */
@@ -5497,6 +5496,7 @@ static void ice_remove(struct pci_dev *pdev)
        ice_set_wake(pf);
 
        ice_adapter_put(pdev);
+       ice_deinit_hw(&pf->hw);
 
        ice_deinit_dev(pf);
        ice_aq_cancel_waiting_tasks(pf);
-- 
2.39.3

Reply via email to