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) {
#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);