From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jens Axboe Subject: Re: [Fwd: [PATCH]: Fix crash in virtio_blk during modprobe ; rmmod ; modprobe] Date: Thu, 22 May 2008 13:35:19 +0200 Message-ID: <20080522113517.GC7712@kernel.dk> References: <48341FC7.4060600@redhat.com> <200805222133.01686.rusty@rustcorp.com.au> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: Chris Lalancette , virtualization@lists.linux-foundation.org, kvm@vger.kernel.org To: Rusty Russell Return-path: Received: from brick.kernel.dk ([87.55.233.238]:16325 "EHLO kernel.dk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756870AbYEVLfW (ORCPT ); Thu, 22 May 2008 07:35:22 -0400 Content-Disposition: inline In-Reply-To: <200805222133.01686.rusty@rustcorp.com.au> Sender: kvm-owner@vger.kernel.org List-ID: On Thu, May 22 2008, Rusty Russell wrote: > On Wednesday 21 May 2008 23:12:39 Chris Lalancette wrote: > > diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.= c > > index 4962e62..c678ac5 100644 > > --- a/drivers/block/virtio_blk.c > > +++ b/drivers/block/virtio_blk.c > > @@ -294,6 +294,7 @@ static void virtblk_remove(struct virtio_device= *vdev) > > =A0=A0=A0=A0=A0=A0=A0=A0vdev->config->reset(vdev); > > =A0 > > =A0=A0=A0=A0=A0=A0=A0=A0blk_cleanup_queue(vblk->disk->queue); > > +=A0=A0=A0=A0=A0=A0=A0del_gendisk(vblk->disk); > > =A0=A0=A0=A0=A0=A0=A0=A0put_disk(vblk->disk); > > =A0=A0=A0=A0=A0=A0=A0=A0unregister_blkdev(major, "virtblk"); > > =A0=A0=A0=A0=A0=A0=A0=A0mempool_destroy(vblk->pool); >=20 > Thanks Chris, it seems reasonable and I'm sure it works (kinda hard t= o > test here, it's my root block dev). Other drivers seem to do > blk_cleanup_queue() *after* del_gendisk: does it matter? >=20 > Jens CC'd: he's gentle with my dumb questions... Rusty. del_gendisk() can generate IO, so it would seem safer to do that _before_ putting the queue reference :-) --=20 Jens Axboe