Re: PATCH? fix unshare(NEWPID) && vfork()

From: Andy Lutomirski
Date: Tue Aug 20 2013 - 15:14:34 EST


On Tue, Aug 20, 2013 at 12:05 PM, Oleg Nesterov <oleg@xxxxxxxxxx> wrote:
> On 08/20, Andy Lutomirski wrote:
>>
>> On Tue, Aug 20, 2013 at 11:50 AM, Oleg Nesterov <oleg@xxxxxxxxxx> wrote:
>> >
>> >> Currently (with or without your patch), vfork() followed by
>> >> unshare(CLONE_NEWUSER) or unshare(CLONE_NEWPID) will unshare the VM.
>> >
>> > Could you spell please?
>> >
>> > We never unshare the VM. CLONE_VM in sys_unshare() paths just means
>> > "fail unless ->mm is not shared".
>> >
>>
>> Argh. In that case this is probably buggy,
>
> I don't think so. Just we can't really unshare ->mm or implement
> unshare(CLONE_THREAD). We simply pretend it works if there is nothing
> to unshare.
>
>> sys_unshare will see CLONE_NEWPID or CLONE_NEWUSER and set
>> CLONE_THREAD. Then it will see CLONE_THREAD and set CLONE_VM.
>
> This matches copy_process() to some degree... but looks confusing,
> I agree.

Huh? Doesn't this mean that unshare(CLONE_NEWPID); vfork() will work
with your patches, but vfork(); unshare(CLONE_NEWPID) will fail? (I
admit I haven't tested it.)

--Andy
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/