X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_dev_mgr.c;h=5561cec7dcb8db786ee838c32a3463495f9187d2;hb=b4aaeaa7233244ad9d607a0077dbbce719833fe0;hp=b5385064c432525ce992b3bfb4ff63380606d45e;hpb=99a5ead7f3960f33a62d8781c92c75099bea89c0;p=palacios.git diff --git a/palacios/src/palacios/vmm_dev_mgr.c b/palacios/src/palacios/vmm_dev_mgr.c index b538506..5561cec 100644 --- a/palacios/src/palacios/vmm_dev_mgr.c +++ b/palacios/src/palacios/vmm_dev_mgr.c @@ -118,8 +118,12 @@ int v3_dev_mgr_deinit(struct v3_vm_info * vm) { v3_free_device(dev); } + v3_free_htable(mgr->blk_table, 0, 0); + v3_free_htable(mgr->net_table, 0, 0); + v3_free_htable(mgr->char_table, 0, 0); + v3_free_htable(mgr->console_table, 0, 0); - /* TODO: Clear hash tables */ + v3_free_htable(mgr->dev_table, 0, 0); return 0; } @@ -211,7 +215,11 @@ int v3_dev_unhook_io(struct vm_device * dev, uint16_t port) { int v3_detach_device(struct vm_device * dev) { struct vmm_dev_mgr * mgr = &(dev->vm->dev_mgr); - dev->ops->free(dev); + if (dev->ops->free) { + dev->ops->free(dev); + } else { + PrintError("Error: %s free() not implemented\n", dev->name); + } list_del(&(dev->dev_link)); mgr->num_devs--;