From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757293AbdKOJwP (ORCPT ); Wed, 15 Nov 2017 04:52:15 -0500 Received: from mail-he1eur01on0098.outbound.protection.outlook.com ([104.47.0.98]:8752 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1757203AbdKOJwE (ORCPT ); Wed, 15 Nov 2017 04:52:04 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=ktkhai@virtuozzo.com; Subject: Re: [PATCH] net: Convert net_mutex into rw_semaphore and down read it on net->init/->exit To: "Eric W. Biederman" Cc: Cong Wang , David Miller , vyasevic@redhat.com, kstewart@linuxfoundation.org, pombredanne@nexb.com, Vladislav Yasevich , mark.rutland@arm.com, Greg KH , Alexey Dobriyan , Florian Westphal , Nicolas Dichtel , roman.kapl@sysgo.com, Paul Moore , David Ahern , Daniel Borkmann , lucien xin , Matthias Schiffer , rshearma@brocade.com, LKML , Linux Kernel Network Developers , avagin@virtuozzo.com, gorcunov@virtuozzo.com References: <151066759055.14465.9783879083192000862.stgit@localhost.localdomain> <88152c11-a5b5-90f8-be46-99ed6c722064@virtuozzo.com> <87shdg8bzd.fsf@xmission.com> From: Kirill Tkhai Message-ID: <8c808278-1925-37c0-619c-87bd1802790a@virtuozzo.com> Date: Wed, 15 Nov 2017 12:51:52 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <87shdg8bzd.fsf@xmission.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: VI1PR0102CA0018.eurprd01.prod.exchangelabs.com (2603:10a6:802::31) To HE1PR0801MB1337.eurprd08.prod.outlook.com (2603:10a6:3:39::27) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5e727994-7416-4d37-06d8-08d52c0e8366 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603199);SRVR:HE1PR0801MB1337; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1337;3:CeLVS9yzo3781zeNHLrttRM3il+M3hILd9sB+2BsEShJlW7anFQkvujXJb2beUc3Dg0jEK6D9Tpw5SN70ZUCG9ENxkKt05yIOOTXYK95kuZUVvtKgD7N2MOiSfc5qKYz7FuYLnWVS8Zr5We5FKrcom5ItmVdfQfe3gXOE+Sd8nOVwuRrbhabgFa3GkPWpOgt0XKyzxFMBVeTGZqXBPH6ZV8eukeXosVLJUFMM4JiJai5w2au8tnEvBX26VNKE+HK;25:QnYVKNHiR/YlugLqiqD3h2mVg7Bgj/jLwS1apReO0l3gPr6U3tpvmKg3vbP7crmVi3a4wB1SLy/uP0q/GvcOD8yCNmWIfR2psn7N5mTtlg1cceO5UEcKNjr0gY4Et276Ia6s8H9bj6alCEzKWr234D3C5fHlE0AnWzLdDxM8VUKKpyOeO1O5uhLv+JhFpA5TbIN6xTF0ovY7htmIT7T+5uo4ajtGOEnEwGufu+hZuWhbBMGLbdf0A7HaXycxAs8IrsW2iRCHApth53+hnKLyI/HwpJ5TS4bgdy57/4GXgQ3er6NZK9sQ8i6mC9tQlUM95OHEIsi5dsMDQgs7PBAJ0A==;31:jpsKVPCRPe37CCfX5bUvYk2h732YbzOge0B6W/ctBXxdxaAXl4XUEtKEVNmiFEdl6I7MKkM5hLl+pALR0HJ6obhHusRI3BX/REI72Oj3vYRqb5xBwFZSRBteq6rwz21aFpEaCk11oFdI8jG93L10L8zhEOcXVdvz7GlaiWkn9uF8FDsej1plVYPDNevqZEcgMiIb1/m5m8IvkbX+X6QQugFifRXF6ZvG62Ec3XB9aRQ= X-MS-TrafficTypeDiagnostic: HE1PR0801MB1337: X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1337;20:x7qgeEyhwIwrrKBlrbWBtoxh0CMMIHlrMxewJFyGuQEDclxqUCkBbC/doZa+rXtopfHyOcD8B8/1gF6MhGzGDYNiSHuDwtZzbCjXCoHgA6HBs/zRokI9cvUrGFIW2xJAgu7tEOcAKFbd2wcdAfFMqtXAwcWE0s2g/ccALg53Oj+b5uf//rqdvS9l1tC4jyDlfVHF/zkAXo/cL6y+WFP6BstISZch/NBrRebGFaXxCjkkYtfs/ENO2iW1hlkzzRR3SQArNA/LdVz41E4a23qWDqSbynNLTuytsvvHTj6T1pvBoip82Om+I4197c9WeutnzOXchKuiAWgJftDpPCmMK8lq6WWpo8p5sAyeA1G0G+LehMOijpfkllOuds9DzfL8xURkDaWgtkgsc+COUxTGnbkkznOJL5HzRUEOxcDJbk4=;4:CVgbK6RT1jSV9lqEKAwaKAAI9L3ZRmYtJCXR2hyXTsXlp7YNG7xeknp5wtuqWe9fazl71V9rtDdS0Ps2jcBu0fZlKpR3NOeZfARtuD6QhTVk462CYQeSz1ND6L3FH7oRESq6rEfT+43NcM6npKfZI4Ue1C0vkto+4auflSOa3L8EnDwGpP8+ABrx5UtLmMktxq3giZizlx5HQu+liL4pttIHbjPjMEUW92TKZlbsaO3SNrQEt+GBdTQdU2E8IZ5ZeN5xVU1NbdQDK/Z2nevmuQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(10201501046)(3002001)(3231022)(100000703101)(100105400095)(93006095)(93001095)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123555025)(20161123562025)(20161123564025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:HE1PR0801MB1337;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:HE1PR0801MB1337; X-Forefront-PRVS: 0492FD61DD X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6049001)(6009001)(376002)(346002)(24454002)(189002)(199003)(189998001)(31696002)(81156014)(3846002)(230700001)(8676002)(36756003)(7736002)(16526018)(81166006)(86362001)(7416002)(101416001)(305945005)(316002)(64126003)(50986999)(16576012)(58126008)(54906003)(76176999)(54356999)(8936002)(31686004)(93886005)(50466002)(6116002)(2906002)(6246003)(39060400002)(23676003)(83506002)(53936002)(106356001)(105586002)(107886003)(4326008)(25786009)(65806001)(66066001)(65956001)(6916009)(2950100002)(6666003)(6486002)(5660300001)(47776003)(77096006)(53546010)(33646002)(97736004)(65826007)(229853002)(68736007)(478600001);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0801MB1337;H:[172.16.25.196];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtIRTFQUjA4MDFNQjEzMzc7MjM6eForYkZibVc1U0p6eDdRWmppcmZEdjhn?= =?utf-8?B?NU4vajUrVkR3Mk11ZHplc3F5eUZzYVNMU2dtOGlMRWw0K0hIanpvd2tmVW1y?= =?utf-8?B?K2Jib3ZKQ0lLOHF4WDFLbDdta1IxbzlLRnJ4akYySm9laWtVUVZUZ3ptNFZi?= =?utf-8?B?WlhwZ1hFd0pnbTh1M3NsaGpOaHlPQVkyY0xFSnhMbGpMVHM3NUE1QVF2Z292?= =?utf-8?B?M3NDSTEzcCtRNjZOTDE0R1l4WEx0eVg1ekJ5b3BRUmFTQk9rU2g1QVhwQzFG?= =?utf-8?B?dEdQc2Q2WWRvSkFhZHdVdUtCbWh3L2FmUHozNFBNVUdNbTlPVmtwVVhCeHBo?= =?utf-8?B?bTlNMXRxY3hMNTNMRUxXVFdRV2YxVmJ3WjhuOFNRcHdOWC9MeVRQaEdDcFd0?= =?utf-8?B?RjErMXZUUi9MamdySzVncW5NTXV4K25WZFJrMURPY296bmt6alVYTTQvY0NS?= =?utf-8?B?dFlmc2pNQXAzTExSQ1FHZ09VbHRQeDQva3BheHpMYWtnK1NSUmdYK2ZlOWpr?= =?utf-8?B?QTcwY1hMbDd6N2FDSGVJQm5hcWJqZlNvclBsSmJNcFZ2cXBCWjFFaXhlTHFi?= =?utf-8?B?dlhyYnFmZDBVTmI2aGRmNVpyN2NkUmhKOWZpT1Y4Y1krRkpxZ3ZyMmVLemtX?= =?utf-8?B?VkhEYng4ZlVyeHNOYmlnQ2oxcTh2TXpiZXJOaEt6UCt1SXVBV0hBVFJSUElv?= =?utf-8?B?bHBETjJRMytqejJxejhUcnhIVjhPVVNMUkVsQW5QTldTU0lpQzdON2h5NlVa?= =?utf-8?B?dXdGeTBhdFBZMWtYc2o4VUxUZThSd1cweVYrdVgxcUxGSGg2d09hN2tzR0ZF?= =?utf-8?B?RElCT0VJWERIUmRpVWx5eTR6UEF1TWVMR1Zpd1dISTNJVXZMY2dBZ3l6Y3Vn?= =?utf-8?B?ZkgxbUtwTFhVbC91VnhoVHEzMThIMnZwNzQwejVJdUxkMmFUSUptcXQ3d3h4?= =?utf-8?B?RjArdEtLMlFLSnJ5bFBuY3RscXZyVUFkV0xFWllwN2FZLzdXaVp0QndMVDVs?= =?utf-8?B?NVBIMnFRTTFvNkVWTnU4bWtZMXRnbVBQMklFLzNXL2dWUk1QN05CQzZ3YlNr?= =?utf-8?B?RVh2VGlyQlVvR0wvTFVWdGliSlNLOFg0SjhaT1I5Q3F3K2locytudFNhaWlk?= =?utf-8?B?Q2VIRVRpM2ZOeTZWZU1FTUVSMDZtTXBHUFc0c0RncTQyK0c1bTd5QkFCcVVm?= =?utf-8?B?M3NaYTQ2dzJlK3BreFNYVEljS3dNUjlIamtEWUtyNFIwcWZ3QTU4NkZDNVBM?= =?utf-8?B?c0E3VGZqVzVGUWNKRVJWWHYzc2FyQmVUN3kreTVodGZaV3VYUUNyTDNGRWc2?= =?utf-8?B?OUVLSURoNk1Ya0w3ejFMcE55MXdvc3FJY0NackEzR1NYQ2RsaWlCYzhYcUVh?= =?utf-8?B?eXJUWi90VHR3OFJZc0I3eTFRWHFmbG03ckc4UkRqZTBhTjNvVjlTdldhQll1?= =?utf-8?B?bmxxdjh0M0pZRTEvcFZ2SWdKWDZKMXc3MUNyaHhSeUdwRFBnMkJNS2JXK25H?= =?utf-8?B?YStsM1JMWSs4ODJ5K2NsbWswWWZkWS9SeWxta2lYcUhmRmlYeXBpN2VLZkw3?= =?utf-8?B?dVVqS09Fa1pMZkEvWmtaaVI5azdwQmV1eUphOXltK01pQmZpNVdpbEQrV2o0?= =?utf-8?B?OUdRZHprS2xROEtpb1hQeklwWUp4ZC9JWkZYdW05U1RvQ0cxUTQwUVpLZGEr?= =?utf-8?B?THFhS2NITHZtalhjUUNheC9LTnFzVm9TUU9qeEFNVjYvclg5Ti9IcHVFOWJn?= =?utf-8?B?TDlNL3FzbG03OTdGczcydnE5YkkvQ2FEQVZxVXd2eTNmVDFrZSt0OG5vdlo0?= =?utf-8?B?NEl5ckpEeXA5Z2hNL2tvdmUwVE51K3RhSXY2U3NFMnpQUVVJQ3RaWGgzRWMx?= =?utf-8?B?ZDdKTnowQnpVQUxsVW1zbzcwaDFFb01obUhiUGc3N3hTbEVUdHZoY1lKUHJl?= =?utf-8?B?NGVGbkEyMlliS2c9PQ==?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1337;6:wSJw8lGC6nyGkxsqz5zy/1AdYMvn+Ss0x4BkOjItnT6VAIXKqPwvPAmMq+R17b5E7wJ4hCQXKBpVn+kbabnmctQt6o/8DOtjxw0n9kJTOy982blrOqRz7rB41m44+enQ0Blgmjwg0Bs0662Hcj4donIEh8jb9plGV6PxEGEm1Tpkpp65Lj06AuI3XUVNNLU23CMe6OYl+jxhEPZE47dUgDlEqwSmWeopxP+IXGn/uUqZKwWWQWZA41hktme/sFCcz/ledbvinZlrh/SPn4Rkj0BDnKU00qYDkwMoRh2qfg1mrM+WA6g81+Tt84s94I0Y2fZTQw+lGsxPDA8F96JHNKS3OiXlDGcs3jp/Ahuectc=;5:8KP5NbqvEe21OQN/4jezYqixJ2AgwQQ/PQbKMoJs2Pn+MQFTrFp8jXwNwi3DtEEdyrZt7/UJ/qjaKcfJrCdq1h3rcs6qOCFSlCsrLmHSIgbbp4ilsTdsuf0dO+vfoQnZHPnfA9RL8j8OIj+nfkdDVNSkG2ggYSD7EcFnrjVfsTQ=;24:cdQ8X1OoAQ8DK7c4fwsT4cmZXG+YRJbofnSGviRM8C7zeAa8zyrbqXLSjP83Yu2o+QGgZEpjrYBVBRrttXu4QqDzu7qCIft2AFNFQFz7T+A=;7:NBLvuMu7+BmqytlY2iv5KCe8nHgCZd+Ep9DbjPBH3dvsJzNOjjRSzG8Hf/mIFPKBGXimORL1kyXENUHnh+dPoYBI6qNixmht8CQk6azuJJ4SIAIQQL64d1MlqtnxR5pWx5WU0nJ50VwaMrh5OhrGoFKOSGBlvtbI6PUV1xKmfFO/PknXqBNv7UgHzJa+7zgSuLMkUo5u/7xBlUyH0B90u2BTse4fNPXIWlLToX/orgkj3SCTkwsUVcb3BpFvCx3d SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1337;20:G2PYWC7rXSvvpWt9rDWoyFowAbv2cyXJsRR315EI2F8t50i2lp9xECEb4Ew55eO5X9DJG+6qrbQVZoVTdgMMuoiWDa5aRD96/6s914odhKZMx9vE4uEkrC5DwgFhzeMTONlnGSTAxYYK3M5/o0s3cHFqLhfghJk/WxUyOHz0g0o= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Nov 2017 09:51:56.3145 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5e727994-7416-4d37-06d8-08d52c0e8366 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1337 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 15.11.2017 06:19, Eric W. Biederman wrote: > Kirill Tkhai writes: > >> On 14.11.2017 21:39, Cong Wang wrote: >>> On Tue, Nov 14, 2017 at 5:53 AM, Kirill Tkhai wrote: >>>> @@ -406,7 +406,7 @@ struct net *copy_net_ns(unsigned long flags, >>>> >>>> get_user_ns(user_ns); >>>> >>>> - rv = mutex_lock_killable(&net_mutex); >>>> + rv = down_read_killable(&net_sem); >>>> if (rv < 0) { >>>> net_free(net); >>>> dec_net_namespaces(ucounts); >>>> @@ -421,7 +421,7 @@ struct net *copy_net_ns(unsigned long flags, >>>> list_add_tail_rcu(&net->list, &net_namespace_list); >>>> rtnl_unlock(); >>>> } >>>> - mutex_unlock(&net_mutex); >>>> + up_read(&net_sem); >>>> if (rv < 0) { >>>> dec_net_namespaces(ucounts); >>>> put_user_ns(user_ns); >>>> @@ -446,7 +446,7 @@ static void cleanup_net(struct work_struct *work) >>>> list_replace_init(&cleanup_list, &net_kill_list); >>>> spin_unlock_irq(&cleanup_list_lock); >>>> >>>> - mutex_lock(&net_mutex); >>>> + down_read(&net_sem); >>>> >>>> /* Don't let anyone else find us. */ >>>> rtnl_lock(); >>>> @@ -486,7 +486,7 @@ static void cleanup_net(struct work_struct *work) >>>> list_for_each_entry_reverse(ops, &pernet_list, list) >>>> ops_free_list(ops, &net_exit_list); >>>> >>>> - mutex_unlock(&net_mutex); >>>> + up_read(&net_sem); >>> >>> After your patch setup_net() could run concurrently with cleanup_net(), >>> given that ops_exit_list() is called on error path of setup_net() too, >>> it means ops->exit() now could run concurrently if it doesn't have its >>> own lock. Not sure if this breaks any existing user. >> >> Yes, there will be possible concurrent ops->init() for a net namespace, >> and ops->exit() for another one. I hadn't found pernet operations, which >> have a problem with that. If they exist, they are hidden and not clear seen. >> The pernet operations in general do not touch someone else's memory. >> If suddenly there is one, KASAN should show it after a while. > > Certainly the use of hash tables shared between multiple network > namespaces would count. I don't rembmer how many of these we have but > there used to be quite a few. Could you please provide an example of hash tables, you mean?