Daniel Hokka Zakrisson wrote: > Pavel Emelyanov wrote: >> [snip] >> >>>> +static struct long_clone_arg *get_long_clone_arg(int __user >>>> *child_tidptr) >>>> +{ >>>> + int size; >>>> + struct long_clone_arg *carg; >>>> + >>>> + if (get_user(size, child_tidptr)) >>>> + return ERR_PTR(-EFAULT); >>>> + >>>> + if (size > sizeof(struct long_clone_arg)) >>>> + return ERR_PTR(-EINVAL); >>> This means that software built against a newer kernel won't work on an >>> older one. Surely that's not intended? >> It is intended. If I ask an old kernel to clone the mq namespace, but >> it doesn't support such, that I'd better like to get an -EINVAL error >> rather than be silently held in an old global namespace. > > That rules out using the struct for things like child_tidptr, the desired > pid for C/R, etc. I think the version Dave Hansen proposed would be A new system call? Ok - what arguments should it take? > better, or if it's really just for bits, use an array rather than a struct > to make that obvious. It's for anything you'd like to tell to clone(). In the nearest future - for more bits to clone new namespaces. In the far future - for pid to create the task with (for c/r jobs). In the the far-far future - for anything you will need then. >> [snip] >> > _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers