diff -urpN --exclude-from=/home/davej/.exclude bk-linus/drivers/media/video/stradis.c linux-2.5/drivers/media/video/stradis.c
--- bk-linus/drivers/media/video/stradis.c	2002-11-21 02:15:45.000000000 +0000
+++ linux-2.5/drivers/media/video/stradis.c	2002-11-21 17:58:56.000000000 +0000
@@ -1428,6 +1428,9 @@ static int saa_ioctl(struct video_device
 				if (copy_from_user(saa->dmavid2, vw.clips,
 						   VIDEO_CLIPMAP_SIZE))
 					return -EFAULT;
+			}
+			else if (vw.clipcount > 16384) {
+				return -EINVAL;
 			} else if (vw.clipcount > 0) {
 				if ((vcp = vmalloc(sizeof(struct video_clip) *
 					        (vw.clipcount))) == NULL)
@@ -1946,7 +1949,9 @@ static int saa_open(struct video_device 
 {
 	struct saa7146 *saa = (struct saa7146 *) dev;
 
-	saa->video_dev.busy = 0;
+	/* FIXME: Don't do it this way, use the video_device->fops
+	 * registration for a sane implementation of multiple opens */
+	saa->video_dev.users--;
 	saa->user++;
 	if (saa->user > 1)
 		return 0;	/* device open already, don't reset */
@@ -1958,7 +1963,7 @@ static void saa_close(struct video_devic
 {
 	struct saa7146 *saa = (struct saa7146 *) dev;
 	saa->user--;
-	saa->video_dev.busy = 0;
+	saa->video_dev.users++;
 	if (saa->user > 0)	/* still someone using device */
 		return;
 	saawrite(0x007f0000, SAA7146_MC1);	/* stop all overlay dma */