Messages in this thread | | | From | "Aneesh Kumar K.V" <> | Subject | Re: [PATCH] 9p: disconnect channel when PCI device is removed | Date | Sun, 15 Apr 2012 17:57:26 +0530 |
| |
Sasha Levin <levinsasha928@gmail.com> writes:
> When a virtio_9p pci device is being removed, we should close down any > active channels and free up resources, we're not supposed to BUG() if there's > still an open channel since it's a valid case when removing the PCI device. > > Otherwise, removing the PCI device with an open channel would cause the > following BUG(): > ...
> diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c > index 3d43206..5af18d1 100644 > --- a/net/9p/trans_virtio.c > +++ b/net/9p/trans_virtio.c > @@ -615,7 +615,8 @@ static void p9_virtio_remove(struct virtio_device *vdev) > { > struct virtio_chan *chan = vdev->priv; > > - BUG_ON(chan->inuse); > + if (chan->inuse) > + p9_virtio_close(chan->client); > vdev->config->del_vqs(vdev); > > mutex_lock(&virtio_9p_lock);
But an umount should have resulted in p9_virtio_close ? How are you removing the device ? Are you removing the device with file system mounted ?. In that case may be we should return EBUSY ?
-aneesh
| |