From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753483AbdA3NwJ (ORCPT ); Mon, 30 Jan 2017 08:52:09 -0500 Received: from mail-eopbgr10112.outbound.protection.outlook.com ([40.107.1.112]:48864 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750801AbdA3Nvv (ORCPT ); Mon, 30 Jan 2017 08:51:51 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=ptikhomirov@virtuozzo.com; Subject: Re: [PATCH v2 2/2] prctl: propagate has_child_subreaper flag to every descendant To: Oleg Nesterov References: <20170127100543.18390-1-ptikhomirov@virtuozzo.com> <20170127100543.18390-3-ptikhomirov@virtuozzo.com> <20170130125141.GA22583@redhat.com> CC: Ingo Molnar , Peter Zijlstra , Andrew Morton , Cyrill Gorcunov , John Stultz , Thomas Gleixner , Nicolas Pitre , Michal Hocko , Stanislav Kinsburskiy , "Mateusz Guzik" , , Pavel Emelyanov , Konstantin Khorenko , "Lennart Poettering" , "Eric W . Biederman" , Kay Sievers From: Pavel Tikhomirov Message-ID: <0eb16bca-eb0d-edd1-de6a-524f155b492b@virtuozzo.com> Date: Mon, 30 Jan 2017 16:15:54 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: <20170130125141.GA22583@redhat.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6P191CA0021.EURP191.PROD.OUTLOOK.COM (10.175.236.159) To DB6PR0801MB1845.eurprd08.prod.outlook.com (10.169.227.143) X-MS-Office365-Filtering-Correlation-Id: f1ad0aee-1b1a-4864-b8e0-08d449122201 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:DB6PR0801MB1845; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1845;3:Hd0uXoB6QARkkUClhOkh60fJ1qQnt2Wrlww5jqImzB/aWmveEHFsvlqGKafUsWO5DTsbYiqrBecntIcF8H2ztOIxDQ4pJ9tpDmKypmyU/R/w70wIqVIvylHWQEGdZgkivXaPs1ZUd0XdjbCR2a5LnUce3tfxhVJ609DIaO2DUlh02J+IHmqy/zYpSbuEODE6dQ2MQWMh98cKtHnKLX8FjNuUN6wl7yqNPnZUEVQttedSmkWgjSadg9QlqF16eTZBAHnuuf+7E5Ij954fY2tXng==;25:6zw6B1mkvaysMbVeBeUz1zG3iDfxWanq5lRDfw7iikPVB9o2am5mpWEnXzC7Sbkep0kVGqJTHRkFTkzfnBH/clbEfNUhlq5p0xsG5VmElfREPn1nGXdpOmiVRZoMgQ92xa5BVFReOGl7pDz9dIqq6BCgRc1tSijlwMu+ezNPciaLECmh+WD7jykO58pXhbMFLpN5o8fpuxpvwd8k+oyLUo5dxWqafJj1labEBjdQ8zToHm+tkV16wxShra7DC5CuCexCaUwj1OlyKB4c7Q7L+JusPP/31YNh1o6/o7p2fL0aIi6R/Q8nua/WNRk808BaVEGSoLaCe9A3rUxmjjefyD7fYDYWB6X+/L0d2UQDTZ8EzyNbq1RC95/f7+zrksNZ9OGA8O1/Kv3UXMtjNN6iHkWKIuKwAJoogf0B3ZttKP9OesX6SnfIrbLcsddVwPGdj8fon5+hOw0P8bTKqpmhVw== X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1845;31:t8qs+jWt9a+icUkxoVP/1ffqlnFbqCdKC8q5O0jbTvKkjhWsmjaH57H38BlQojgIqovPc70dZgEc02Jfkx5Hwb4c4NKPf5rYMGG2OzzWtkcQGfe8TcthppCEMvXYiq7E6r8XhjIeo4M780dqLWedQjbDfs+zAhtT+Iogh3zac6Udlx+p29SMcWGFjkkkMXN7riRjxmVGiZF7GHpwP+a/Wcl/XQywC6niyxnC9Ky0FGwL7QyQ4t74X09z2Ovvg/IE;20:AnV7jj7WKeYQ0o1KfNrB0mFBHNfBM1LdgU9B9jDoqxjU5d4zSy5SRJMidPuma+ei7i0WppJV1zVp5WJ5sUIMxqalmTooZA5BTpdeh3brwMLJQUGnRHaEuReLa0EXLMpmf+W6XFzJnKBtlZLx402qn2qAGfW1pY55cfmyU5gnMG6NBeylCXYJ18YILR0EaXnlUN9CCC56RMM1+OPUlGkF0uxoJBWSh0NInAicA4gHMSsmMIVPWBSJt/3jj4NIY4Vo X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6041248)(20161123564025)(20161123562025)(20161123555025)(20161123560025)(6072148);SRVR:DB6PR0801MB1845;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0801MB1845; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1845;4:YYQmWXUl23K0QCOKOKp2UPylFOE+n9hpWuOdNMxQGzb6AplYrfa7bp3DoWxMYtMmT09o3xOn/9cwtV0yNsFQ34rHduQTU4OsNjaVUtLnsf+eAclEKNaKjkOnGxXrUfbNTNPAwDks/XN6rCRhs/5bYx62T69xA30PHg1u6HzB+h+TTsKLd99NP+KNJ3vmAozse5FxWhbDrhTFcXKIpKuBr/PWexWam1IwXggZlE9PF6oK6fPP7taxXbKH5C6BOWjbAib2nh/BVJH69LnzOatrO5POhwu+7YkByRrrS+6mIM4475slf3ZuXjVSVUIKutuor9Rxc1LWHy96AWZBY7QV2mAJDvyxSrdcTt0Wb9g8clqRrpnIIBxY0ISzq+7unfhILfOm/KSHfTP+YtirbTEr7x0N2KrOfL7Mdvdm2dXGL6KVCpgq2pa8+m/1gaxRxhKEI+k8sShMBlm0u1xFOZ9qWh/db5kU7K3mFk2RSOpetC5x5gg8JMAqcH445v2+FGTXHjmDIc1dfkJX7K5UH2IRutLI50XF2RiBwWp5P0hbt7bkRwXaaMq/rr7oKxWWQiGGfZesSZxp7cf2mmE5+9HD7A== X-Forefront-PRVS: 0203C93D51 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(7916002)(39450400003)(189002)(377454003)(24454002)(199003)(97736004)(4326007)(65826007)(31696002)(77096006)(90366009)(6486002)(53936002)(6666003)(25786008)(4001350100001)(305945005)(7736002)(2906002)(65806001)(5660300001)(65956001)(50466002)(110136003)(23746002)(33646002)(47776003)(36756003)(66066001)(6116002)(3846002)(64126003)(83506001)(92566002)(6916009)(54906002)(42186005)(38730400001)(189998001)(230700001)(8676002)(31686004)(50986999)(229853002)(76176999)(101416001)(105586002)(86362001)(106356001)(54356999)(81166006)(2950100002)(68736007)(81156014)(7416002);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR0801MB1845;H:[172.16.24.246];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;DB6PR0801MB1845;23:shOX2j1CDHIEgbnTzJu+LfHKRoeEZRl7qnv?= =?Windows-1252?Q?VuNRyatN3XySX5/IFQjDJrCoa210AD/cKFWkAQuRRET8Bzpock3o4lQn?= =?Windows-1252?Q?f7qkc9VugSA91uFLEn0Ct/c9RAteHy6/bv7ujXuLg1ORLmFKHImIS0Iq?= =?Windows-1252?Q?7cwzoTtaNI9RySGAEn4p4wDozflIdh8AS/phFJFmaKBG59Y85igfO5rC?= =?Windows-1252?Q?baxrNw6lWrt99QipXXLcnp0Z8Pgjb7e/P2jlM9mzKBHD3IGq/QjSe3nq?= =?Windows-1252?Q?B0iyALnJmC1+N1v2OYO/WaTa9wOAVom2EiJe7xzgO/NQGYotNPMtfW2/?= =?Windows-1252?Q?vJaf6Y60xuPYtVZJeHhk2vTpyVCPAXR1o/ahhSIJcmYHUF260e/yPax8?= =?Windows-1252?Q?4gD2Kz4o4oPdTUOfn7k2QiWY1l9jcaG73MqxE5+0JoJWKBA/7D3KTJaa?= =?Windows-1252?Q?xnxJH5lgHfivHvIgn7v+M67x+1S2YPfnZR9G4BLN/C36PQ/OFNCK8ski?= =?Windows-1252?Q?VWTpUMc71pxCSEbpnlBJ+141QqmvXijpc38DvDTIiDC3YT325YSvJRVK?= =?Windows-1252?Q?D4h23r1Yu9brZnn8QFzMJ7Lrr3eJJcHKrwv9wkTrX7VpEPD4QNx4qFyH?= =?Windows-1252?Q?Z5PNG6JqB9Qd1MA6Khu0mRXklgX+/IfwnTZjUB30fdM4YrJOg/fskfOL?= =?Windows-1252?Q?poRMoyzpu81TzyELWnBhAsQnQubxrI677KvPlacuyvbCtmD/DDUJlQ7K?= =?Windows-1252?Q?6+gmChuERtiBbivkVCrzQ48/bha2QnxuchlRY4NPXVF/5dJyQwoJyBX/?= =?Windows-1252?Q?vBW2DbyRD8D09U/RRbW+2j4PgoqD53kWXwm0fNBJzw9+45OY3wmYKoGf?= =?Windows-1252?Q?USiySjeyUsL2DA4bGFlxoki2+tDDy0f0dTmiLMt0xhpLvPNaZXXOCWxT?= =?Windows-1252?Q?Mvw3nSC8R1vI7Bwmtm5ka1FVZ/Mvy4hWjNa1vfjsi/d99C3N4Jt4UmAy?= =?Windows-1252?Q?/VOh3mrU9I8hP7oSl5BMNDE1fqQvgAvFThrxvWTDkfGQyyDgnnmIgam3?= =?Windows-1252?Q?L18i92CvzPw6yOm1WolPq7O56W9DkhWikqYpr2pvtwa17V9pu2a7vPys?= =?Windows-1252?Q?wY5kkJjjNSYKhUIW1Mldz4grfxH3Uxq3p6c5ChMq75VFk0Avc08wkJxh?= =?Windows-1252?Q?RjjspCKGOFL+0mgFmUHfMyMWmW/7IS0o4Sicizr/paM+inQW4eLlV0xq?= =?Windows-1252?Q?VaXIv+Ge9xTOVI0RP5+i8lnnf5QNV62QLcJF0Rc3uiUt+Mmicf5morao?= =?Windows-1252?Q?m94RqYayiTpEjlpNGhostyxjBHzNfm2GGhp8QmD3F7/3uLIMiQ4nXEnU?= =?Windows-1252?Q?XxC6qzGHm3YDrOWjge1AtnR2iGr2BPZJOJZre5AcQKSIO9HSBOfVYAtP?= =?Windows-1252?Q?Bug2OpFGhdkhxV84b1BFNuANsxRg367LScqPJdj3xxeDYzKIY445dX2o?= =?Windows-1252?Q?QMbD3iMuX7Cqw5BZOHy+cRsBtZ+7s?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1845;6:lRHvxgr0bB+LOqln22ngzhsV2k0wG7eoEHh4U1FZWEp8eQunPzqKXs9ItKTZWr7cUG3Ij3iOR9ZGptSQu+Pa5KVPsRcQrAWqDJpBx2+GwpeJLgGwxKys54pr8BL7BI723LYjmZZlo4d+3pKNqsfwc8zDhK961WJifJYePW92XbbIsJJYEznmRLyL5pwAulp3ToxeU56haXkLvRtU+fBUjqF8M1f4E2XguEj1RUhMyzudTRICbawDV3At76ezwlHLxNX13M4DZGGRNVXjdUe21dAc+RENp1qi8nN+t3NT/8LLOJRNll6WAtTjuHR2/5UpEeyUpCCF4Xl44M0qs9dbzAHEPjUPjIe3ZHM+k2SwYcx8raTlFfmOk4KzffTHdwmlK/ftj0LN63yZ7xMSMdbmxXGKc7Pnc0zPy9E5V5BXSiI=;5:1ZoRqw45hAtnR98NtLtTnRm6ixtJQ1gSqQIKScPBcv8AHXJ6C/5hwFGFFKCSSEB+CqqmAR0W24/3h+r72hP+4483pNPvcqirgDWqDGDOYGvGaRPjlYjjjc/kY02WmhkU8bfqCyBToxHOwYPl1NXw1w==;24:C3MfrHKFgthJlEJqwJhi03zEHf0StwiFncnm2K2vfsCgdQNih2I/uuREePK7A8av1bJF3M3smqsx1ePkmQT++msKFLNd54f0LZA0jFEXA+0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1845;7:aHKt/0Pu8J1+DN8FjCTI1j5JRNmXC55U9TqYsBwwA4x+8Pnr8Q/5nxKPw3hxMEqcTXOtZI1aPVsaQP1IKgLP9gsTn8JzMthqrfWT7EubEaHVS/WiQwLQtsvo4YKBKXVB+jFNQ9VOUpJ54pPT60QgY9AyjQFy/gjXR3Go2dMtmeX6xHn7lNkm2XB901TmWZRk8/euQLFgfqqpua3axqry5+NWYg0FF1GJi+C3THO6MjGTm6ANhv67gBn5PcQR8O5j9nNlL8rh9DZ9BKs6ofSi0NEvSs6gcAOT+3skxneZqmFt5J3HAZqr9214XerWRkL8nu6y8aEowxPvJ9wRhiOEqfRG2pH+T8p71lennShp1YmVb7d8Nb3PUsl4V20Zc+o1L/ncf3lN4riKaFAu0jZqqUcGIliJ29rHD/+j6u81CGHZhTozOast/nZrLdGqrkxaOaAw9gtdzl/h/vFRinkf7Q==;20:Xfqj5MsF6KUCZUv7bsfpIvnfy2w+zs4u0IcxE8cqWqjejfMbbV6i7Cj1hvHSmmyMI8Redm4RRNmD+IAsurFDu+y2j/L7YH8VSQQhK+k9FeEyBIfpePgRxaR3fmzIvamkdzFfy/B/DqsYoLJHV/VC/jVleHA5u209da14QigpiJ4= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2017 13:15:58.2219 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB1845 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 01/30/2017 03:51 PM, Oleg Nesterov wrote: > On 01/27, Pavel Tikhomirov wrote: >> >> --- a/include/linux/sched.h >> +++ b/include/linux/sched.h >> @@ -1725,6 +1725,8 @@ struct task_struct { >> struct signal_struct *signal; >> struct sighand_struct *sighand; >> >> + struct list_head csr_descendant; >> + > > You forgot to remove this part ;) Oh, sure. > >> --- a/kernel/fork.c >> +++ b/kernel/fork.c >> @@ -1367,9 +1367,6 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk) >> sig->oom_score_adj = current->signal->oom_score_adj; >> sig->oom_score_adj_min = current->signal->oom_score_adj_min; >> >> - sig->has_child_subreaper = current->signal->has_child_subreaper || >> - current->signal->is_child_subreaper; >> - >> mutex_init(&sig->cred_guard_mutex); >> >> return 0; >> @@ -1800,6 +1797,13 @@ static __latent_entropy struct task_struct *copy_process( >> >> p->signal->leader_pid = pid; >> p->signal->tty = tty_kref_get(current->signal->tty); >> + /* >> + * Inherit has_child_subreaper flag under the same >> + * tasklist_lock with adding child to the process tree >> + * for propagate_has_child_subreaper optimization. >> + */ >> + p->signal->has_child_subreaper = current->signal->has_child_subreaper || >> + current->signal->is_child_subreaper; > > Ah yes, we need this change too... > > And perhaps it would be more correct to do > > p->signal->has_child_subreaper = > p->real_parent->signal->has_child_subreaper || > p->real_parent->signal->is_child_subreaper; > > the current code is not exactly right if CLONE_PARENT... I'm fine with inheriting 'has' flag from real_parent, because if real_parent does not have 'has' flag set but parent has 'has' set, we inherited the flag in vain. But I don't actually think that inheritance from parent not real_parent breaks my optimization: if real_parent has the flag, so does the parent. > > Oleg. > -- Best regards, Tikhomirov Pavel Software Developer, Virtuozzo.