From: Pavel Emelyanov <xemul-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
To: Cedric Le Goater <clg-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
Cc: Linux Containers <containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org>
Subject: Re: Namespaces exhausted CLONE_XXX bits problem
Date: Tue, 15 Jan 2008 12:57:48 +0300 [thread overview]
Message-ID: <478C839C.6010507@openvz.org> (raw)
In-Reply-To: <478C7F95.6050800-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
Cedric Le Goater wrote:
> Pavel Emelyanov wrote:
>> Cedric Le Goater wrote:
>>> Pavel Emelyanov wrote:
>>>> Dave Hansen wrote:
>>>>> On Mon, 2008-01-14 at 16:36 -0500, Oren Laadan wrote:
>>>>>> I second the concern of running out of 64 bits of flags. In fact, the
>>>>>> problem with the flags is likely to be valid outside our context, and
>>>>>> general to the linux kernel soon. Should we not discuss it there
>>>>>> too ?
>>>>> It would be pretty easy to make a new one expandable:
>>>>>
>>>>> sys_newclone(int len, unsigned long *flags_array)
>>>>>
>>>>> Then you could give it a virtually unlimited number of "unsigned long"s
>>>>> pointed to by "flags_array".
>>>>>
>>>>> Plus, the old clone just becomes:
>>>>>
>>>>> sys_oldclone(unsigned long flags)
>>>>> {
>>>>> do_newclone(1, &flags);
>>>>> }
>>>>>
>>>>> We could validate the flags array address in sys_newclone(), then call
>>>>> do_newclone().
>>>> Hmm. I have an idea how to make this w/o a new system call. This might
>>>> look wierd, but. Why not stopple the last bit with a CLONE_NEWCLONE and
>>>> consider the parent_tidptr/child_tidptr in this case as the pointer to
>>>> an array of extra arguments/flargs?
>>> It's a bit hacky but it looks like a good idea to me !
>>>
>>> Shall we use parent_tidptr or child_tidptr to pass a extended array of
>>> flags only ? if we could pass the pid of the task to be cloned, it would
>>> be useful for c/r.
>> Yup. I think we can declare a
>>
>> struct new_clone_arg {
>> unsigned int size;
>> };
>>
>> and consider the xx_tidptr to be a pointer on it. After this we
>> may sen patches that add fields to this structure.
>>
>> E.g. first
>>
>> struct new_clone_arg {
>> unsigned int size;
>> + unsigned long new_flags;
>> };
>>
>> to add flags for cloning new namespaces. Later
>>
>> struct new_clone_arg {
>> unsigned int size;
>> unsigned long new_flags;
>> + int desired_pid;
>> };
>>
>> and each code that needs to access the extra argument would need
>> to check for new_clone_arg->size to be not less than the offset
>> of the field he need an access to. E.g. like this:
>>
>> #define clone_arg_has(arg, member) ({ \
>> struct new_clone_arg *__carg = arg; \
>> (__carg->size >= offsetof(struct new_clone_arg, member) + \
>> sizeof(__carg->member)) })
>>
>> ...
>>
>> if (!clone_arg_has(arg, desired_pid))
>> return -EINVAL;
>>
>> This would keep the API always compatible.
>
> Pavel, this is pretty neat.
Thanks, but what to do with unshare()? Stop unsharing namespaces
is not an option, so we'll have to add a new sys_unshare2 system
call with similar technique for argument passing.
> I think we need to work on a patch now and send it to andrew and lkml@
> to have a larger audience.
OK, I'll try to prepare the one for clone() today. Hope it will
be ready to be sent tomorrow.
> I doesn't seem to be a really big patch and I wondering how I could help.
I'll send it for pre-review before showing to people ;)
> We still have to prepare something for security_task_create()
>
> Thanks !
>
> C.
Thanks,
Pavel
next prev parent reply other threads:[~2008-01-15 9:57 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-14 13:45 Namespaces exhausted CLONE_XXX bits problem Pavel Emelyanov
[not found] ` <478B6764.6050300-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-01-14 14:44 ` Cedric Le Goater
[not found] ` <478B7549.2020000-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-01-14 14:50 ` Pavel Emelyanov
[not found] ` <478B76C4.8050804-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-01-14 15:20 ` Cedric Le Goater
[not found] ` <478B7DB3.9050702-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-01-14 16:32 ` Serge E. Hallyn
[not found] ` <20080114163246.GA31663-6s5zFf/epYLPQpwDFJZrxKsjOiXwFzmk@public.gmane.org>
2008-01-14 16:52 ` Pavel Emelyanov
[not found] ` <478B9345.30004-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-01-14 18:07 ` Serge E. Hallyn
[not found] ` <20080114180748.GA2772-6s5zFf/epYLPQpwDFJZrxKsjOiXwFzmk@public.gmane.org>
2008-01-14 21:36 ` Oren Laadan
[not found] ` <478BD5CD.7030607-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2008-01-14 21:54 ` Dave Hansen
2008-01-15 8:25 ` Pavel Emelyanov
[not found] ` <478C6E14.1050901-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-01-15 8:39 ` Cedric Le Goater
[not found] ` <478C7156.2090004-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-01-15 8:53 ` Pavel Emelyanov
[not found] ` <478C7493.8070405-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-01-15 9:40 ` Cedric Le Goater
[not found] ` <478C7F95.6050800-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-01-15 9:57 ` Pavel Emelyanov [this message]
2008-01-15 9:22 ` Dave Hansen
2008-01-15 9:24 ` Pavel Emelyanov
[not found] ` <478C7BD1.7040905-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-01-15 15:08 ` Serge E. Hallyn
[not found] ` <20080115150806.GH4453-6s5zFf/epYLPQpwDFJZrxKsjOiXwFzmk@public.gmane.org>
2008-01-15 15:51 ` Cedric Le Goater
2008-01-15 7:53 ` Cedric Le Goater
[not found] ` <478C665C.80106-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-01-15 14:35 ` Serge E. Hallyn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=478C839C.6010507@openvz.org \
--to=xemul-gefaqzzx7r8dnm+yrofe0a@public.gmane.org \
--cc=clg-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org \
--cc=containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.