Re: [PATCH 1/2] fork: extend clone3() to support CLONE_SET_TID

Christian Brauner
2019-07-29T20:10:58Z

On Mon, Jul 29, 2019 at 08:17:58PM +0100, Dmitry Safonov wrote:
> On Mon, 29 Jul 2019 at 20:12, Dmitry Safonov <0x7f454c46@gmail.com> wrote:
> >
> > On Mon, 29 Jul 2019 at 17:52, Adrian Reber <areber@redhat.com> wrote:
> > [..]
> > > --- a/include/uapi/linux/sched.h
> > > +++ b/include/uapi/linux/sched.h
> > > @@ -32,6 +32,7 @@
> > > #define CLONE_NEWPID 0x20000000 /* New pid namespace */
> > > #define CLONE_NEWNET 0x40000000 /* New network namespace */
> > > #define CLONE_IO 0x80000000 /* Clone io context */
> > > +#define CLONE_SET_TID 0x100000000ULL /* set if the desired TID is set in set_tid */
> > >
> > > /*
> > > * Arguments for the clone3 syscall
> > > @@ -45,6 +46,7 @@ struct clone_args {
> > > __aligned_u64 stack;
> > > __aligned_u64 stack_size;
> > > __aligned_u64 tls;
> > > + __aligned_u64 set_tid;
> > > };
> > >
> >
> > I don't see a change to
> > : if (unlikely(size < sizeof(struct clone_args)))
> > : return -EINVAL;
> >
> > That seems backwards-incompatible, but I may miss some part..
>
> On the other hand, clone3() was merged in v5.3 window, so probably,
> it doesn't matter.

It would matter. Even if this were to be accepted and preferred over the
existing /proc/sys/kernel/ns_last_pid interface the earliest point in
time I'd consider this for would be 5.4. So I think this would need to
be changed. :)

Christian