void remove(struct pci_dev* dev)
{
struct pexor_privdata* priv = (struct pexor_privdata* )pci_get_drvdata(dev);
+ pexor_free_dma_buffer(priv); // JAM 2016: must be done before cleanup_device
+ if (priv->memwrite_buffer != NULL) {
+ vfree(priv->memwrite_buffer);
+ }// JAM 2016: must be done before cleanup_device
cleanup_device(priv);
- pexor_free_dma_buffer(priv);
- if (priv->memwrite_buffer != NULL) {
- vfree(priv->memwrite_buffer);
- }
+
+
pexor_msg(KERN_NOTICE "PEXOR pci driver end remove.\n");
}
priv->bases[j] = 0;
priv->reglen[j] = 0;
}
+ pexor_dbg(KERN_NOTICE " try to free privdata structure at %lx\n",
+ priv);
kfree(priv);
+ pexor_dbg(KERN_NOTICE " - done. now disable pci device... \n",
+ priv);
pci_disable_device(pcidev);
+
}
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Joern Adamczewski-Musch / Ludwig Maier");
MODULE_DESCRIPTION("pexor device driver for HADES TRBNet");
-MODULE_VERSION("2.0.0");
+MODULE_VERSION("2.0.1");
MODULE_DEVICE_TABLE(pci, ids);
module_init(pexor_init);