From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Wed, 13 Jun 2018 10:30:07 -0600 From: Keith Busch To: Ben Hutchings Cc: Jianchao Wang , stable@vger.kernel.org, Sasha Levin , Greg Kroah-Hartman , linux-kernel@vger.kernel.org Subject: Re: [PATCH 4.4 110/268] nvme-pci: Fix nvme queue cleanup if IRQ setup fails Message-ID: <20180613163007.GD5574@localhost.localdomain> References: <20180528100202.045206534@linuxfoundation.org> <20180528100214.621806271@linuxfoundation.org> <1528906474.2289.155.camel@codethink.co.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1528906474.2289.155.camel@codethink.co.uk> Sender: linux-kernel-owner@vger.kernel.org List-ID: On Wed, Jun 13, 2018 at 05:14:34PM +0100, Ben Hutchings wrote: > On Mon, 2018-05-28 at 12:01 +0200, Greg Kroah-Hartman wrote: > > � result = adapter_alloc_sq(dev, qid, nvmeq); > > � if (result < 0) > > @@ -1597,9 +1597,12 @@ static int nvme_create_queue(struct nvme > > � return result; > > � > > � release_sq: > > + dev->online_queues--; > > This addition looks wrong. dev->online_queues is incremented by > nvme_init_queue(), but this function only calls that at a point where > it is sure to succeed. So why would a failure path need to decrement > it? Thank you very much the catching that. This particular patch is indeed not correct without the following: 161b8be2bd6ab ("nvme-pci: initialize queue memory before interrupts")