virtio: fix module/device unloading

The virtio code never hooked through the ->remove callback.  Although
noone supports device removal at the moment, this code is already
needed for module unloading.

This of course also revealed bugs in virtio_blk, virtio_net and lguest
unloading paths.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell
2007-11-19 11:20:42 -05:00
parent d1c856e0f1
commit 74b2553f1d
4 changed files with 28 additions and 5 deletions

View File

@@ -404,8 +404,12 @@ free:
static void virtnet_remove(struct virtio_device *vdev)
{
unregister_netdev(vdev->priv);
free_netdev(vdev->priv);
struct virtnet_info *vi = vdev->priv;
vdev->config->del_vq(vi->svq);
vdev->config->del_vq(vi->rvq);
unregister_netdev(vi->dev);
free_netdev(vi->dev);
}
static struct virtio_device_id id_table[] = {