On Thu, Nov 12, 2009 at 11:21:20PM -0600, serue@xxxxxxxxxx wrote: > +asmlinkage long sys32_eclone(void) > +{ > + int rc; > + struct pt_regs *regs = task_pt_regs(current); > + int args_size; > + struct clone_args kca; > + unsigned long flags; > + int __user *parent_tid_ptr; > + int __user *child_tid_ptr; > + unsigned long __user child_stack; > + unsigned long stack_size; > + unsigned int flags_low; > + struct clone_args __user *uca; > + pid_t __user *pids; Would you mind converting this to a syscall which takes its parameters via registers? You might have a look at git commit 2d70ca23f86647e076e3a8b64b3a90e583b894d5 "[S390] Convert sys_clone to function with parameters." > + > + flags_low = regs->orig_gpr2 & 0xffffffffUL; > + uca = compat_ptr(regs->gprs[3]); > + args_size = regs->gprs[4] & 0xffffffffUL; > + pids = compat_ptr(regs->gprs[5]); > + > + rc = fetch_clone_args_from_user(uca, args_size, &kca); > + if (rc) > + return rc; > + > + if (kca.clone_flags_high) > + return -EINVAL; > + flags = flags_low; > + parent_tid_ptr = (int __user *) kca.parent_tid_ptr; > + child_tid_ptr = (int __user *) kca.child_tid_ptr; _If_ the kernel uses these two pointers to access user space then the most significant bit of the pointer values must be cleared by using compat_ptr(). -- To unsubscribe from this list: send the line "unsubscribe linux-s390" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html