From nobody Sat Jul 25 18:05:57 2026 Received: from mail-pl1-f174.google.com (mail-pl1-f174.google.com [209.85.214.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 59624388E4E for ; Wed, 15 Jul 2026 07:45:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784101508; cv=none; b=jDz/5CNw2ZYEZUleVbB4NMdqW1KZA6PMMYIxRBDQPqtNWEm5fv2IZ5oaryzA1tJvwEHamNRcmjL+zQwXCNsZPPVhUt7cCot0dEaP2a6hjcHDPOxPn8a0LjPKdclIWGAjyrt5LyWl3FZ0G7aWNQXaUI+4OtppF81WlKYHc1APUgM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784101508; c=relaxed/simple; bh=Gwpwp1Y/9bxWn5LSGy1sQF/CdPB+qnJ7v0kooULMYYQ=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=hz82OPDdOslCJzIrkszQTs5l5P4oH3elaRlA7OJLHekUs+nnTvE36kbS3VC0jtO/MGQuVj5pamc94EAQmuE2IYDbP3EwtzQF7URmgwY5BxRsghS4XMuE9R+xSCVxNtN8T/cPLhR3rj6W7fQ58eO2wx+z+DVFDiYsLDZBTHL8dT8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=k9Zg2VcK; arc=none smtp.client-ip=209.85.214.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="k9Zg2VcK" Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-2cc7e86e7aeso18562815ad.2 for ; Wed, 15 Jul 2026 00:45:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784101507; x=1784706307; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=eFEOc9K8ZH4WjUhqE0lhCkuF5t/lKGFy+XbxPZKCt8U=; b=k9Zg2VcKs+a0eO/QqYwuS+2LD09w3su0yKUNikLuzff49sdxGahEvqCtlnGWfQDJHp hvKfHhz0BrKNwKnO8ci4nmw16STKHtYvOVUMwRxvjwMIDaLbn38L4Sa9A3VkO1MqCgB5 N4BQVEeUdP69YNd4IJ6Q23VRw8L5KmI1kgoXx8T2aLZdacvtlbRddWRjp/H875cqfaNH zq6O/KpSaCSFKJNIQ8o/X8+EEy9SxPq2AipGzVnhkoQrBZiXx7vf1pBoUvViPkIVb5ir Z7kJgfAI8IHYtEugV4QqKuKhLPTtXKhw72L56+gBTS892yTKU9l7TwuA4zlF6S9sV+tS t3Pg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784101507; x=1784706307; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=eFEOc9K8ZH4WjUhqE0lhCkuF5t/lKGFy+XbxPZKCt8U=; b=a73f7ghdy+8AE9mJIsZcv3CNBiaaAR30rj5PoZyGtCa34Pzq4m28aRX6OZgj6Nae7N UISf+pX1qCM8YqVqA+a9Oa/jVl8Ku8mRWqynAQtXkzjgkX/tuhAFkoyfp5N57N9294og U6IqJnOcI+XlZSS/iA8ye66lnRHmRsQwHJnQ3r9/Jf/cVRVw4yA5MUw0qjb71FBixnp8 k1WHggILtjn9UJtdor/NuV5gpfCsFv8IRTabqJFQgzAaAWal0oD4W8cRB1/aRkBor3Ty 0E+kpG9EQtXXjH1yECokGpHKckn2GwCyiQCHtq02vaMp5BskNqw1aUDb7CnoiQrHl6s1 GMrQ== X-Forwarded-Encrypted: i=1; AHgh+Rrh7gp6ee1H7L/JgBRNEbY+yFZ8VsxEcjLaLvPZt37LsZD6s4kFfgKp7XMCHWkXMY2MpR5ebwsfoq9xtwM=@vger.kernel.org X-Gm-Message-State: AOJu0YyOk7w14VuuaaCzb8i1d0r+eiciZhrpKp+484Kp0uviMRIZZrFm /Jv1RelUpgOm1Z4PvUhWWFJOkbnwgJn6DD2hhxkh4vPoM7UV/UvzNgyeIyec X-Gm-Gg: AfdE7cl1AqLysm511dlhfwuD6XCbzPRtvpJbbZsk6ZIhHWWK4QsMDB/HsAB1F9RXoyV cC1beLhWwJHGSVCpSRhkua0BSvnjvQAvj4UwSs81JT1lFBP4uDhYzMgdw1uIoTkgFTlarj361Js HuvwFKQjHN83HmfluS4Wuzzkq9nynYDrHFyY9pSOgMfQ7CkGL6HJEJVDXyrc8AKZN7r/iljoGC9 sBKO/hmc5L+ejKWWF1SydumwiTt4zOhQNjkJ95ipbneDHBuawTiGJ6JpBIgD3oGmwvRTR1vszTm tt7KBX7k/h1zycHE/0YKgA+0eed5xXdo7q8uxKBTbsYD1euEJsaJ2ek2aIC1VG2eeZg4QYTIV75 WS0tNJ3zUhpF84VhlQNLB0rKcfRbXuJ6KUPPiZTsozPvxJYUsor6RXK0C2r+hTRzP/1kIUh4HOi vTYzfuuwn0xYwXNvGHSLYte5aoyl/ibx6pwx2oLRwsPh6dMMAEXuXc+T5v7aqFnK6ZG9sn3tha1 k2PgaFO/p51sTtu5A/2Rt6yumB3mwZ8ncRqSCR6UAsFutLWAw== X-Received: by 2002:a17:902:db0b:b0:2cc:6b7a:dfcb with SMTP id d9443c01a7336-2ce9f028b80mr152805965ad.33.1784101506574; Wed, 15 Jul 2026 00:45:06 -0700 (PDT) Received: from localhost.localdomain ([14.5.152.27]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ccc9d3bd33sm130345175ad.58.2026.07.15.00.45.03 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 15 Jul 2026 00:45:05 -0700 (PDT) From: Myeonghun Pak To: Keith Busch , Jens Axboe , Christoph Hellwig , Sagi Grimberg Cc: linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Myeonghun Pak , Ijae Kim Subject: [PATCH] nvme-pci: disable controller on admin queue IRQ setup failure Date: Wed, 15 Jul 2026 16:44:59 +0900 Message-Id: <20260715074459.50760-1-mhun512@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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_ctr= l(). 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. This issue was identified during our ongoing static-analysis research while reviewing kernel code. Fixes: b60503ba432b ("NVMe: New driver") Cc: stable@vger.kernel.org Co-developed-by: Ijae Kim Signed-off-by: Ijae Kim Signed-off-by: Myeonghun Pak Reviewed-by: Christoph Hellwig --- drivers/nvme/host/pci.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index 2f0c05719316..07aa9af9bc89 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -2221,6 +2221,7 @@ static int nvme_pci_configure_admin_queue(struct nvme= _dev *dev) result =3D queue_request_irq(nvmeq); if (result) { dev->online_queues--; + nvme_disable_ctrl(&dev->ctrl, false); return result; } =20 --=20 2.47.1