mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-14 07:42:38 -04:00
ionic: clean dbpage in de-init
Since the kern_dbpage gets set up in ionic_lif_init() and that function's error path will clean it if needed, the kern_dbpage on teardown should be cleaned in ionic_lif_deinit(), not in ionic_lif_free(). As it is currently we get a double call to iounmap() on kern_dbpage if the PCI ionic fails setting up the lif. One example of this is when firmware isn't responding to AdminQ requests and ionic's first AdminQ call fails to setup the NotifyQ. Signed-off-by: Shannon Nelson <shannon.nelson@amd.com> Reviewed-by: Simon Horman <horms@kernel.org> Reviewed-by: Joe Damato <joe@dama.to> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
696158ff4d
commit
c9080abea1
@@ -3526,10 +3526,6 @@ void ionic_lif_free(struct ionic_lif *lif)
|
||||
lif->info = NULL;
|
||||
lif->info_pa = 0;
|
||||
|
||||
/* unmap doorbell page */
|
||||
ionic_bus_unmap_dbpage(lif->ionic, lif->kern_dbpage);
|
||||
lif->kern_dbpage = NULL;
|
||||
|
||||
mutex_destroy(&lif->config_lock);
|
||||
mutex_destroy(&lif->queue_lock);
|
||||
|
||||
@@ -3555,6 +3551,9 @@ void ionic_lif_deinit(struct ionic_lif *lif)
|
||||
ionic_lif_qcq_deinit(lif, lif->notifyqcq);
|
||||
ionic_lif_qcq_deinit(lif, lif->adminqcq);
|
||||
|
||||
ionic_bus_unmap_dbpage(lif->ionic, lif->kern_dbpage);
|
||||
lif->kern_dbpage = NULL;
|
||||
|
||||
ionic_lif_reset(lif);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user