From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jiri Slaby Subject: Re: [PATCH] virtio: make PCI devices take a virtio_pci module ref Date: Fri, 05 Dec 2008 14:17:06 +0100 Message-ID: <493929D2.4070900@gmail.com> References: <1228394671.3732.77.camel@blaa> <49385DB7.4060306@gmail.com> <4938EE0B.8020501@msgid.tls.msk.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: Mark McLoughlin , Rusty Russell , linux-kernel , kvm , Anthony Liguori To: Michael Tokarev Return-path: Received: from ug-out-1314.google.com ([66.249.92.168]:7126 "EHLO ug-out-1314.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751625AbYLENRa (ORCPT ); Fri, 5 Dec 2008 08:17:30 -0500 Received: by ug-out-1314.google.com with SMTP id 39so4096894ugf.37 for ; Fri, 05 Dec 2008 05:17:28 -0800 (PST) In-Reply-To: <4938EE0B.8020501@msgid.tls.msk.ru> Sender: kvm-owner@vger.kernel.org List-ID: 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.