Large stack allocation in w9966 driver.

From: Dave Jones
Date: Wed Jan 21 2004 - 14:48:31 EST


Another large on-stack allocation. (This time around 2KB).

Dave


diff -Nru a/drivers/media/video/w9966.c b/drivers/media/video/w9966.c
--- a/drivers/media/video/w9966.c Wed Jan 21 19:10:44 2004
+++ b/drivers/media/video/w9966.c Wed Jan 21 19:10:44 2004
@@ -875,6 +875,7 @@
unsigned char addr = 0xa0; // ECP, read, CCD-transfer, 00000
unsigned char* dest = (unsigned char*)buf;
unsigned long dleft = count;
+ unsigned char *tbuf;

// Why would anyone want more than this??
if (count > cam->width * cam->height * 2)
@@ -894,11 +895,14 @@
w9966_pdev_release(cam);
return -EFAULT;
}
-
+
+ tbuf = kmalloc(W9966_RBUFFER, GFP_KERNEL);
+ if (tbuf == NULL)
+ return -ENOMEM;
+
while(dleft > 0)
{
unsigned long tsize = (dleft > W9966_RBUFFER) ? W9966_RBUFFER : dleft;
- unsigned char tbuf[W9966_RBUFFER];

if (parport_read(cam->pport, tbuf, tsize) < tsize) {
w9966_pdev_release(cam);
@@ -911,7 +915,8 @@
dest += tsize;
dleft -= tsize;
}
-
+ kfree(tbuf);
+
w9966_wReg(cam, 0x01, 0x18); // Disable capture
w9966_pdev_release(cam);

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/