]> jspc29.x-matter.uni-frankfurt.de Git - trbnettools.git/commitdiff
update
authorhadaq <hadaq>
Fri, 9 Mar 2012 00:52:30 +0000 (00:52 +0000)
committerhadaq <hadaq>
Fri, 9 Mar 2012 00:52:30 +0000 (00:52 +0000)
pexor/kernel-module/pexor_trb.c

index 27b03e04438a76a8deffdf50770abccd7d56bb42..e80e19f00afd6720db92ba55cfdcf16e9681cc35 100644 (file)
@@ -1450,6 +1450,14 @@ int pexor_ioctl_trbnet_request(struct pexor_privdata *priv, unsigned long arg)
     status = dmaSize;
     pexor_read_buffer_ctr = dmaSize * 4;
     
+    /* Check dmaSize */
+    if ((dmaSize * 4) >= (priv->dma.size * PAGE_SIZE)) {
+      pexor_msg(KERN_ERR
+                "ERROR> Invalid DMA Size %d, larger than dmaSize\n", dmaSize);
+      status = -204;
+      goto OUT_IOCTL;
+    }
+
     /* Check Credentials */
     cred2 = ioread32(priv->pexor.dma_debug2);
     if (cred2 != cred1) {
@@ -1463,8 +1471,9 @@ int pexor_ioctl_trbnet_request(struct pexor_privdata *priv, unsigned long arg)
 #ifdef PEXOR_TRB_DEBUG
     {
       int i;
-      pexor_msg(KERN_ERR "DMA: dmaSize: %d\n", dmaSize);
-      for (i = 0; i < dmaSize + 20; i++) {
+      pexor_msg(KERN_ERR "DMA: dmaSize: %d   pexor_read_buffer_ctr: %d\n",
+                dmaSize, (int)pexor_read_buffer_ctr);
+      for (i = 0; i < dmaSize; i++) {
         u32 val = 0;
         val = ioread32((i % 2 == 0)
                        ? priv->pexor.dma_debug0 : priv->pexor.dma_debug1);