Re: [PATCH] nvme-pci: disable controller on admin queue IRQ setup failure

Keith Busch <[email protected]> Tue, 28 Jul 2026 15:05:00 -0600
Newsgroups org.infradead.lists.linux-nvme,org.kernel.vger.linux-kernel,org.kernel.vger.stable
Message-ID <amkZfAmClmnzSCYV@kbusch-mbp>
On Wed, Jul 15, 2026 at 04:44:59PM +0900, Myeonghun Pak wrote:
> nvme_pci_configure_admin_queue() enables the controller and then requests
> the admin queue interrupt. If queue_request_irq() fails it returns without
> disabling the controller, and no caller compensates: nvme_pci_enable() only
> frees the IRQ vectors and calls pci_disable_device(), after which
> nvme_dev_disable() treats the controller as dead and skips nvme_disable_ctrl().
> The controller is left enabled (CC.EN set) on this error path.
> 
> Disable it in the failure path, while the PCI device is still enabled so the
> CC.EN clear handshake completes.

Thanks, applied to nvme-7.3.