]> jspc29.x-matter.uni-frankfurt.de Git - trbnettools.git/commitdiff
pexor driver: bugfix in kernel module remove (wrong order of freeing
authorJörn Adamczewski-Musch <j.adamczewski@gsi.de>
Fri, 22 Apr 2016 12:34:45 +0000 (14:34 +0200)
committerJörn Adamczewski-Musch <j.adamczewski@gsi.de>
Fri, 22 Apr 2016 12:34:45 +0000 (14:34 +0200)
resources). Compiles with kernel 4.1.20 (openSUSE 42.1
leap) without further changes.

pexor/kernel-module/pexor_trb.c
pexor/kernel-module/pexor_trb.h

index e806857341961f36f45adecf8571bf225d768034..6beaa5f7cb6e6020dc014671ef2097ad29a2be2a 100644 (file)
@@ -266,12 +266,14 @@ unsigned char get_pci_revision(struct pci_dev* dev)
 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");
 }
 
@@ -430,8 +432,13 @@ void cleanup_device(struct pexor_privdata* priv)
     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);
+
 }
 
 
@@ -1552,7 +1559,7 @@ int pexor_ioctl_trbnet_request(struct pexor_privdata* priv,
 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);
index 408508e8add631661480e122a01daaa99492fbdc..7317e28b6bb08767b265bc1c47538a8ed08d0e11 100644 (file)
@@ -95,7 +95,7 @@
 
 #include <linux/ioctl.h>
 
-#define PEXORVERSION    "0.995"
+#define PEXORVERSION    "2.0.1"
 
 
 /* the states:*/