--- drivers/char/moxa.c 2005-01-05 09:37:08 -0500 +++ drivers/char/moxa.c 2005-01-05 09:38:38 -0500 @@ -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];