From: Rusty Russell Subject: Re: [PATCH] virtio: make PCI devices take a virtio_pci module ref Date: Sun, 7 Dec 2008 19:00:08 +1030 Message-ID: <200812071900.08987.rusty@rustcorp.com.au> References: <1228394671.3732.77.camel@blaa> <4938EE0B.8020501@msgid.tls.msk.ru> <493929D2.4070900@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Cc: Michael Tokarev , Mark McLoughlin , "linux-kernel" , kvm , Anthony Liguori , Greg KH To: Jiri Slaby Return-path: Received: from ozlabs.org ([203.10.76.45]:37055 "EHLO ozlabs.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753474AbYLGIaQ (ORCPT ); Sun, 7 Dec 2008 03:30:16 -0500 In-Reply-To: <493929D2.4070900@gmail.com> Content-Disposition: inline Sender: kvm-owner@vger.kernel.org List-ID: On Friday 05 December 2008 23:47:06 Jiri Slaby wrote: > Michael Tokarev napsal(a): > > Jiri Slaby wrote: > >> On 12/04/2008 01:44 PM, Mark McLoughlin wrote: > >>> Nothing takes a ref on virtio_pci, so even if you have > >>> devices in use, rmmod will attempt to unload the module. > >> It unbinds the device properly as any other driver. So what's the problem here? > > > > Here's what we get when rmmod'ing (a zero-refcounted but > > in use) virtio_pci (I did it by a chance, cut-n-pasted > > the wrong line): > > > > WARNING: at drivers/base/core.c:122 device_release+0x5f/0x70() > > Device 'virtio1' does not have a release() function, it is broken and must be fixed. > > Modules linked in: ext3 jbd mbcache acpiphp dock pci_hotplug virtio_net virtio_blk virtio_pci(-) virtio_ring virtio > > > > Pid: 361, comm: rmmod Tainted: G S 2.6.27-i686smp #2.6.27.7 > > [] warn_slowpath+0x6f/0xa0 > > [] prepare_set+0x30/0x80 > > [] __wake_up+0x3e/0x60 > > [] release_sysfs_dirent+0x45/0xb0 > > ... > > So why don't you fix the root cause and add such a crap into the probe > function (not even counting probe can fail later)? > > Fix the virtio bus instead. Incoherent? CHECK Rude to bug reporter? CHECK Unhelpful? CHECK Wow, you must be a *great* kernel maintainer! Thanks for making us all so very, very proud. Rusty.