Index: linux-2.6.10-ckdev/drivers/char/moxa.c
===================================================================
--- linux-2.6.10-ckdev.orig/drivers/char/moxa.c	2004-12-25 10:14:48.000000000 +1100
+++ linux-2.6.10-ckdev/drivers/char/moxa.c	2005-01-10 14:42:44.479548168 +1100
@@ -1668,6 +1668,8 @@
 		return -EFAULT;
 	if(dltmp.cardno < 0 || dltmp.cardno >= MAX_BOARDS)
 		return -EINVAL;
+	if(dltmp.len < 0 || dltmp.len > sizeof(moxaBuff))
+		return -EINVAL;
 
 	switch(cmd)
 	{
@@ -2822,8 +2824,6 @@
 	void __iomem *baseAddr;
 	int i;
 
-	if(len > sizeof(moxaBuff))
-		return -EINVAL;
 	if(copy_from_user(moxaBuff, tmp, len))
 		return -EFAULT;
 	baseAddr = moxaBaseAddr[cardno];
