]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ionic: clean dbpage in de-init
authorShannon Nelson <shannon.nelson@amd.com>
Mon, 9 Jun 2025 21:46:43 +0000 (14:46 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 13 Jun 2025 09:31:06 +0000 (10:31 +0100)
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>
drivers/net/ethernet/pensando/ionic/ionic_lif.c

index 7707a9e53c439df1e09a7191ce2d4b9ee3804cfa..48cb5d30b5f6f60c938eac6029e95b63561895b7 100644 (file)
@@ -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);
 }