{
        unsigned long clone_flags;
        unsigned long newsp;
-       int *parent_tidptr, *child_tidptr;
+       int __user *parent_tidptr, *child_tidptr;
 
        /* syscall2 puts clone_flags in d1 and usp in d2 */
        clone_flags = regs->d1;
        newsp = regs->d2;
-       parent_tidptr = (int *)regs->d3;
-       child_tidptr = (int *)regs->d4;
+       parent_tidptr = (int __user *)regs->d3;
+       child_tidptr = (int __user *)regs->d4;
        if (!newsp)
                newsp = rdusp();
        return do_fork(clone_flags, newsp, regs, 0,
 /*
  * sys_execve() executes a new program.
  */
-asmlinkage int sys_execve(char *name, char **argv, char **envp)
+asmlinkage int sys_execve(char __user *name, char __user * __user *argv, char __user * __user *envp)
 {
        int error;
        char * filename;
 
 
        switch (wbs & WBSIZ_040) {
        case BA_SIZE_BYTE:
-               res = put_user(wbd & 0xff, (char *)wba);
+               res = put_user(wbd & 0xff, (char __user *)wba);
                break;
        case BA_SIZE_WORD:
-               res = put_user(wbd & 0xffff, (short *)wba);
+               res = put_user(wbd & 0xffff, (short __user *)wba);
                break;
        case BA_SIZE_LONG:
-               res = put_user(wbd, (int *)wba);
+               res = put_user(wbd, (int __user *)wba);
                break;
        }