]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 28 Aug 2025 14:25:58 +0000 (16:25 +0200)
[ Upstream commit c9080abea1e69b8b1408ec7dec0acdfdc577a3e2 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/pensando/ionic/ionic_lif.c

index b746944bcd2aee959cf8274153b3ea5539b8a399..7ed77a8304e682a0bb8536c5046efb7c543d137f 100644 (file)
@@ -3142,10 +3142,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);
 
@@ -3171,6 +3167,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);
 }