Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp11170783ybi; Thu, 25 Jul 2019 11:12:05 -0700 (PDT) X-Google-Smtp-Source: APXvYqziflfq96usP4Gqqc8FGhm/+4pdGU2RSuiFp/6227NP2Jk3b457xHFgHWfJv91/wuQk3DXu X-Received: by 2002:a17:90a:db44:: with SMTP id u4mr93872687pjx.52.1564078325507; Thu, 25 Jul 2019 11:12:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564078325; cv=none; d=google.com; s=arc-20160816; b=ZtS5Fe/dlQdE5TO8T9Sxoi/X6Qr2t79suVmfo27/QqK6Mxuw+1a3UEAc6uPfE/FC2X CpJ0DwrWVzoxaqz5ZGDEAgro+10uqBnJ8CEs6y006zd5nZA8XpWQBc/9QtrtccIadDjx o4YBnWTrh+kARttigHpCUXzshXvcrxsiP2GG8Fg5wfzERBrpVOt67kqFhAv9hehFy5yF a4IhH3gf77a/Rnuj0GPEe7eWk9jXDtvQA7cuaUJaTVULOYCYipL7qXytJYGKz0HSTmbo 3XfOH5Bu29WPq4Y0kY40Qn+B9zyNt8aVnk+XSLIiG6E4rqhHoUvMIE/4cCayK9rTHtuX I2IA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=RLks1VEJfg9MJoVbv9YekdEVNfnWrN4IEBUkUatWcHY=; b=uNnHqjGhCoordK+XwagOiqTRix/tczHo1b9XZ0PDZouHrcwW6H2BXqpznethTlBDcp J/x1det1pNOKRHidQFX6N0uIxEA9yqhuHv8yCfDeYhvXdSC7rytTuVCr2cpu/TjxC6J2 sv5wnlStHXyoBSZDvQVdQBpcrPLNsBO3aJU7h9PgCQu2UnQmZaNzMH5WwSDR+pc2YR9V 16racXCVIKn1iXH78SMid92I2jcLzRvZVHGgkIMFr87c/KB9osGs+HCCmz0UVpacypUB fzIjexG0XJNvAtCuFkU7QZlMS8nwZJdKJmEhKXTLBQ159F8LatkNsupO8/t/+3Xh5gdz G9ow== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@brauner.io header.s=google header.b=QaNQQpH5; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x7si19634694pfi.257.2019.07.25.11.11.50; Thu, 25 Jul 2019 11:12:05 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@brauner.io header.s=google header.b=QaNQQpH5; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729651AbfGYQ5B (ORCPT + 99 others); Thu, 25 Jul 2019 12:57:01 -0400 Received: from mail-wr1-f66.google.com ([209.85.221.66]:38794 "EHLO mail-wr1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729614AbfGYQ5A (ORCPT ); Thu, 25 Jul 2019 12:57:00 -0400 Received: by mail-wr1-f66.google.com with SMTP id g17so51552624wrr.5 for ; Thu, 25 Jul 2019 09:56:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brauner.io; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=RLks1VEJfg9MJoVbv9YekdEVNfnWrN4IEBUkUatWcHY=; b=QaNQQpH5AQEF+zjkRSPqqyzmm0k2dKJifTpV9RujHZdBYmvv3OT0jRioUwm7mnk0N+ ursxEFRjypSDdnVYK5PsaEleTbvjIrQx8OsG1RwFl9BKEUJiNGpa00fa0ZriSzFYotyz IBPL1R4T7BNOdgJHJNpAet8Jm0rLaN6BxH9uLXHHL2bIktLlMj72SdbCOeH8H2qJeBBO Csg2Uh1ojBLSTcGVi7lkZ333WsRdmY8txb1YPIZMvk0tVbNR0S/AJlRodKip7T5Thlp3 GxNzr/sM2la7Rr2khnryUfM5fj3nVbpMKgrFry55KoSUbYrtMj0bOorZ1laWvikjtOq6 G7Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=RLks1VEJfg9MJoVbv9YekdEVNfnWrN4IEBUkUatWcHY=; b=JMv3+lL/kQeN5em10ekRzpgBucg3gqISHSc/KSpRF2Vvo+VU8Ox6YcIfF9ZYLmadpa F5Mzizb62jLUM4LSdc/d4OgmghCvKtNRYixaYZ3PPINwBWgRFe+jbXE4XSCguANMIBNC NE6u+z0kf2fOwkRro6b9BTLHif1xSlJHy+ARE8nQYywn+lURRTIweIteS1HgeC0aGcx1 L5Fr+fgeCrkyQiZR87u0afShny4StHVaUzzbnIi8VvjwrjxpqAzmFkd6S5JDgVCh3CpJ AXAIa5SIhSJ7RQXcgogZhiUC6rtiW4kDMWsFgv5zV8dnm+m6CtXXotnAJNDSfLaFAKl7 M2oQ== X-Gm-Message-State: APjAAAWBBKp2OqxrPlCkcBhO88Vb/XhihQbZu/TAUV3BjePHPHW1pbfA WuHdQuCbV7pa6hhInJdkJaI= X-Received: by 2002:a5d:4101:: with SMTP id l1mr41450933wrp.202.1564073818896; Thu, 25 Jul 2019 09:56:58 -0700 (PDT) Received: from brauner.io ([213.220.153.21]) by smtp.gmail.com with ESMTPSA id z7sm47723214wrh.67.2019.07.25.09.56.57 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 25 Jul 2019 09:56:58 -0700 (PDT) Date: Thu, 25 Jul 2019 18:56:57 +0200 From: Christian Brauner To: Oleg Nesterov Cc: linux-kernel@vger.kernel.org, arnd@arndb.de, ebiederm@xmission.com, keescook@chromium.org, joel@joelfernandes.org, tglx@linutronix.de, tj@kernel.org, dhowells@redhat.com, jannh@google.com, luto@kernel.org, akpm@linux-foundation.org, cyphar@cyphar.com, torvalds@linux-foundation.org, viro@zeniv.linux.org.uk, kernel-team@android.com, Ingo Molnar , Peter Zijlstra , linux-api@vger.kernel.org Subject: Re: [PATCH 4/5] pidfd: add CLONE_WAIT_PID Message-ID: <20190725165656.pbtmtm3hxxmj4aq6@brauner.io> References: <20190724144651.28272-1-christian@brauner.io> <20190724144651.28272-5-christian@brauner.io> <20190725103543.GF4707@redhat.com> <20190725104006.7myahvjtnbcgu3in@brauner.io> <20190725112503.GG4707@redhat.com> <20190725114359.GH4707@redhat.com> <20190725122650.4i3arct5rpchqmyt@brauner.io> <20190725161316.GI4707@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20190725161316.GI4707@redhat.com> User-Agent: NeoMutt/20180716 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jul 25, 2019 at 06:13:17PM +0200, Oleg Nesterov wrote: > On 07/25, Christian Brauner wrote: > > > > The key is that you want to be able to create child processes in a > > shared library without the main programing having to know about this so > > that it can use P_ALL and never get stuff from the library. > > OK, thanks... > > in this case you should probablu pass 0 in CSIGNAL to ensure that the main > program won't be notified when that child exits. Yes, that's the idea. So you'd turn off SIGCHLD and rely on pidfd polling only. That's similar to how pdfork() on FreeBSD works. It's just that we need to do: struct clone_args args = { .exit_signal = 0, .flags = CLONE_PIDFD | CLONE_WAIT_PID, }; Now the shared library can guarantee that noone else in the mainloop gets woken by a SIGCHLD from the pidfd-based helper process (because exit_signal is 0) but afaict it also needs CLONE_WAIT_PID. Since the latter allows it to guarantee that if someone in the mainloop gets SIGCHLD from another regular process and calls waitid(P_ALL) it won't accidently reap a pidfd-based process that has exited. Fyi, I'm splitting CLONE_WAIT_PID out into a separate patchset and only keep P_PIDFD for now. So we can discuss this independently. You think that's better Oleg? Christian