From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753268AbdKQSg3 (ORCPT ); Fri, 17 Nov 2017 13:36:29 -0500 Received: from mail-eopbgr30095.outbound.protection.outlook.com ([40.107.3.95]:21440 "EHLO EUR03-AM5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1760705AbdKQS2K (ORCPT ); Fri, 17 Nov 2017 13:28:10 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=ktkhai@virtuozzo.com; Subject: [PATCH RFC 05/25] net: Add primitives to update heads of pernet_list sublists From: Kirill Tkhai To: davem@davemloft.net, vyasevic@redhat.com, kstewart@linuxfoundation.org, pombredanne@nexb.com, vyasevich@gmail.com, mark.rutland@arm.com, gregkh@linuxfoundation.org, adobriyan@gmail.com, fw@strlen.de, nicolas.dichtel@6wind.com, xiyou.wangcong@gmail.com, roman.kapl@sysgo.com, paul@paul-moore.com, dsahern@gmail.com, daniel@iogearbox.net, lucien.xin@gmail.com, mschiffer@universe-factory.net, rshearma@brocade.com, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, ktkhai@virtuozzo.com, ebiederm@xmission.com, avagin@virtuozzo.com, gorcunov@virtuozzo.com, eric.dumazet@gmail.com, stephen@networkplumber.org, ktkhai@virtuozzo.com Date: Fri, 17 Nov 2017 21:28:00 +0300 Message-ID: <151094328094.20009.1172105574765830336.stgit@localhost.localdomain> In-Reply-To: <151094119999.20009.6955267140148739392.stgit@localhost.localdomain> References: <151094119999.20009.6955267140148739392.stgit@localhost.localdomain> User-Agent: StGit/0.18 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR0502CA0013.eurprd05.prod.outlook.com (2603:10a6:3:e3::23) To DB6PR0801MB1335.eurprd08.prod.outlook.com (2603:10a6:4:b::7) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 84439dee-0a8f-46fc-11e2-08d52de8f1f2 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(4534020)(4602075)(7168020)(4627115)(201703031133081)(201702281549075)(2017052603258);SRVR:DB6PR0801MB1335; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1335;3:81Qn+WO6etbD0ezQZvXQsz2ZcAjiJamEmmGGOlnbMjjob0eli7ercfCzF9zN7ATJStgCd8f0kUdGptxfdcgyKN0T+wvgKDVEDrSh9wo+w1yanXbZpRe9apBprJ7pEdoz68BUxHjIJC6uWtdNfXdlWQmX19HbJ+CyLxW2zhPK0ptzk6lY99ifw+zObxz6RKhfrt0g5XQ9bN8oTUQrY5Zdnz4kGP3JBoDgBX+PHWCieUXoMcZrNXRZF2oLym2PYhLN;25:sGZRdGqQr0/sbl21Qjm2Wb6SLrVV2J+Do+eGUB7vcfL6hSlV+zCwt9/2q1gPlru4SeRw8u4l8XTyYv6LuWJS+93dUzJAhHS0XhkISXpbSSLU5iRU82pHH5LT11EpS15hmInmaVyxArJmLEQkTIViXtJEefnoJfIXJkdoP4Mhfaxp6bCR9T9jiXCQ+4ttEAscahLdqAzrX7cxsPB8SQRHCcI5iwAERj2hRhb5d631+onuc4t4HU7zsLm5EBlzswC7sX/ZIZc16tMGDT74cr1m4azSb9LEKRLctJCn4TxRGtdJVQHH7TgyVS1lwhZSyu6vu1dT5FuFiw8JkSG4N0jB5w==;31:pdpM6I7kJr7mTrRsrr4G62n+YlpfuIePEuhGrXqxy+FdSt9BmWKlADFDhWYqfxzN6xjuei/ty8fQxjFThtAshfohVBA1bOIJHkRR0+IL6UHyLpuGU9t85Q8+elqOQPddj/LKDO6D1ZPfShmyH3adjvwqMv+5XQpD0lLdtTkSfuTC+FzthviW7o/3dQ8Y8G972JTIbLD4Ta0EXMiXk8IbwJsmL/sFne4NSKW5/F44LYk= X-MS-TrafficTypeDiagnostic: DB6PR0801MB1335: X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1335;20:TUm2tYJVtQu4Eb4igk+53Nn/zX3ewG6yvctG4+XerwQIJ+DbcMiAIIBdSTiPIcb2tncJCLQiCoCaNFTqU24Fql+KYF84cOxxkgdrKjiFiWE31GLNFT//dNU1IvwXcN1kZM9iP9CixukapQcUBxW3WP8unakrFsI6AdxRNV/deg9Ob+lqsHvZCFNXomYTU+f4KK0iKpQCbnpQDUgUi048sPGYE9dlxC8SMYOP4U/OhZ/P1TX0Ej+2LuHc8L1w2qez8UYSUDt6klIJLn7Zn1pEG9wh99mfdYOOKorxQpJwn7BayUti9hIH9h/+TTr4Pjj9n1GVmNL/XgablO8QNujsNfj1YwN2JaUNOvLPvkAafBpXi4cz00qVFaitIgZndSGJ7EO74zLIxd0YKbNWl2Gb1e5OjuHJ2qfwLR24a3itwCw=;4:QtpeesXIa03Iri7XaRTBtfl0C2TP11JryybMc253sbijwLNNniZAM5U9LSd+pwBB6Qa36Iu4hxpdkdQtWTY0sK4t2lL7PzzR4pMJ+iQGpmeWYGeUGy9byRLKwUoW8KHfxzZnjichTdL5Iqe1upc3RTOjmymweH1wpYzfC0KKbxwoQrbNixHLVNHqAcfKF8y+/OuvSyHo/wBBObbaO1PiynHBzOScYUf+jnGOufqVcjvz+BKOjn9b67skVGpZeDXMdRZberTL0qXvURUZ5ohEWA== 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)(3231022)(93006095)(93001095)(3002001)(100000703101)(100105400095)(6041248)(20161123555025)(20161123564025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:DB6PR0801MB1335;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:DB6PR0801MB1335; X-Forefront-PRVS: 049486C505 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6069001)(6009001)(346002)(376002)(199003)(189002)(8936002)(305945005)(23676003)(83506002)(58126008)(9686003)(66066001)(2906002)(97736004)(68736007)(101416001)(25786009)(53936002)(86362001)(103116003)(7736002)(478600001)(81166006)(8676002)(76176999)(5660300001)(54356999)(3846002)(50986999)(106356001)(230700001)(7416002)(55016002)(81156014)(189998001)(55236003)(33646002)(50466002)(61506002)(16526018)(47776003)(6506006)(15650500001)(6116002)(2950100002)(39060400002)(316002)(105586002)(921003)(1121003)(217873001);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR0801MB1335;H:localhost.localdomain;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQjZQUjA4MDFNQjEzMzU7MjM6bTFNUGtDWG1GQ2pTR3RvcExDK0l3RlR3?= =?utf-8?B?bmlxRW5hZ0x5WU55ZjcyczRVUGdPemtYcWtrbmszcjFtRkpQcjNYMDlhSnZx?= =?utf-8?B?Q3pUWTBmcEtKVnhIdW9sY2VKZm5DQW9hN0UrT0JJY2szbHNHSTJjUlZ5Mmgr?= =?utf-8?B?dDA3ZE9KdFl6bmQ0YTNIY0lDU1cySDh6d3c1R2pmaFhodWQ3VEVHU3BCMXE5?= =?utf-8?B?b0xUR3RFYUl1Zmd2UWdUOXVyQzBna0JCWW5JZHRWWGFFSDBxZFR1a1c4d01M?= =?utf-8?B?RWE2UFZWRDhkdnJpVjNhekgvOVZVSTFXTk1wSEFIWkhGajlDRUhqRjAvYnNw?= =?utf-8?B?cXlyeElaalI4ODR1MGhzbk5WZ2kzSVgxMTEyVjhsSk9WVnF2SEthTEtQalll?= =?utf-8?B?WnVQd0hlbzJKc2NSMWpaU1g5N3J0V2J3SW1sR3pZOFRxS1FoT3ZnakpNRzZ4?= =?utf-8?B?MFBQdXpUWXdIcHVQdHZFeUVmOFBVcUdnaFRpaTNPdHVLSzZQVUcvWkk2RGZX?= =?utf-8?B?YnRZQjNhWGd4RWlRSUpZWmxGektmTWh5OHpXK1BjK2RPRTB2YzBVYkExVmNT?= =?utf-8?B?aTZzR0xXYXJ3MjAwUzgzNGUybmFRbC9MVUFuUkR1YnNoa2E0bGhwODRleXcy?= =?utf-8?B?Z3M4UXMxWnlsZWtBRWUza3lQekxobGJmZHMzL1BKakN6UXE5ZEhVQ2VrV001?= =?utf-8?B?QURQakx3bVczN1JWSER5aHlicWgvSkpYSFM4SGxIVlhFYlJPVHN0dDFvdTlx?= =?utf-8?B?R2FCeUIxOUYrWU9tSW5Xdy90cWUrRTVQNGZsdk5oRWg4RC9OdWpmNjFsSnNt?= =?utf-8?B?WGE3R1dQMzhXYWVTcTJsTGxkNllsV1JwQktDa3dPRDl4TmZVUmI3N2JyY2pV?= =?utf-8?B?TVQyNnRSZmQzZFlTUkY0TDFjdjhwcWZHUGJVNlI2M3hkWm1wajZWTklNZjly?= =?utf-8?B?VnRURy8rTmI4S3dTYkJMdVNLWUt6RE54b2dIMVlYRzUwem8rZVRkVXZNL3pK?= =?utf-8?B?c0pISkhNRDFwUVZrd3hVYm5mY0Y3QW1kdkFnQnAvWlRTZTFwSCttTkc0M2VG?= =?utf-8?B?UCtqczZGT2dsRUVCQ0lHb3FHMmI5ZlpLUC8vRGJ3emhYOFI2MlJuZ2tPcys3?= =?utf-8?B?dXNzNzEyVkFISjNBTmR6cVEyTDFoTk9SRGkwM3BJNkZCSk4xWjVqRUZobFFE?= =?utf-8?B?MjZZeWhkTmtKc0lPWnB0MVJZNisvNjQybk5xOEc4dm00M1NnSmc0akpLM1Fn?= =?utf-8?B?MlREb3NlN3FkWTh4Rml1MFlVZUZCMFdIVFJLOThaWVhwaTRBaG1yeFlLd1Fu?= =?utf-8?B?VU5QbUdtK3drTnovZFk0b0YwRmJnekRoL3QzZHBUZ05XRzR4alduRlNUdFZD?= =?utf-8?B?S0NLVlNxYkRiTVJZK21ZNVdPSEoxZVBoQkczK1dadnlIV0lKeThPME43MTB1?= =?utf-8?B?RjBiS2Z6RkRaTjJaUkhvOXF6WkU3TGFac2FQbHJ0azBOQWkyTHlhVUJGZk9L?= =?utf-8?B?a0F5N25DN25sUER4NzkyT1FVbENFZm9ya1J6eUdpSGJFNVI4MGhQT0lCVXk1?= =?utf-8?B?SVBaWHZtYlBqVm9GOWdCQW5HRTlDVWVMc09SMDZ2ZDhDYWxNaURRQTZ6OHJG?= =?utf-8?Q?qWyW1tOSLUhMw7IIoTEidK?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1335;6:Cqlp1W0Hx5aIsXBT6r4LgwSOZsMzc+PPGv1Y3El3EyUxRrB/ToSfOYN5DqER2WmG4Um8pnSifnqFLypXLP7/3eXWtX+ehXsxC0aRol3/c4w29uxsA3pbb6t7uUPADXqW+zhrOfNQuTX1d5HCTj1LIs+ze9qgHB2Bk0MavrRO8VXa5rdRQCHz6aioHjlDsXIghC6l+MDx166+2Ym7u5bevyl37gHA8rnxCxFPRlZ4n5UQDPZNTdPHwhwXc0AALr0RErM+fJajqomF1ywxbcUq/00iPHWQfpF0M5HVfi2zFsLvyHf+yQIOxQmSAnjfcZ7enHKi/jk8j5M/zCCGJfNc8EfILQh0JyMWYERoCENUa0k=;5:FrCCvWj9w89d4weap4fY3kVcG1bKYDEqkputZs7JFpEl3nUCYViInt/wJOsX6AI7XCaC2hVeXR2jxAHS8BNRp7LG/RsGaVMmMZA8udP5HELEtIUX19E6jukIFSGgSRqRvugcIwvAyyd218uQlfCkV176jO8KXmBXt6rDmKdTnrw=;24:oGq/zydZQKUehCJ4q4xwIUa1NsRT1dPRy7LYX7mjEO4h1YPHBMp0iTSvUCojIWXPZzLf2fxtek6QbkBp6GvfUQs7AabkfXQ03AP3UFfj31Q=;7:xbXRL+J8x/ed0LTr9zkKA2RoJL/uhFPI46cNxlJ/gkMF3l6Nwa63oGVhAPRhGVADb55WcFt7bKAhZKYTC9yn2xtqoUlBgYa1bbUmG+bDnExYoSzedKY2vM+7JyLno/QGii5wPXrmNQhN/mZC82DmhveZBTV+J6Td287o+SoKFLtBg+cmB2k/BgAM6uUUBJSwkliwSN6jFtH7a5NI+nauNkUiIDeNIOmBPqe9U8vLUxFYp6znpIlFOLX7/SWmPIpx SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1335;20:X+Mhn6jgdTMfiSGtx/y8vhQT8dy/e6RF7EtJSEkOfjSf0RZtp9rE2dsbWSbUXA0QmLp2f5ZmYOvs85rlInEHftuDL04f3RQGHB4JiYt5iFpHUPDnMSoGzxsngw127tMJ2QoVUDc+7HSMc1Y3nq4N7Z+DWDq35htecCpDuhFE7Ts= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Nov 2017 18:28:03.6222 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 84439dee-0a8f-46fc-11e2-08d52de8f1f2 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB1335 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently we have first_device, and device and subsys sublists. Next patches introduce one more sublist. So, move the functionality, which will be repeating, to the primitives. Signed-off-by: Kirill Tkhai --- net/core/net_namespace.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index a8ea580885d9..1d9712973695 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -939,6 +939,18 @@ static void __unregister_pernet_operations(struct pernet_operations *ops) static DEFINE_IDA(net_generic_ids); +#define update_first_on_add(first, delim, added) \ + do { \ + if (first == delim) \ + first = added; \ + } while (0) + +#define update_first_on_del(first, to_delete) \ + do { \ + if (first == to_delete) \ + first = (to_delete)->next; \ + } while (0) + static int register_pernet_operations(struct list_head *list, struct pernet_operations *ops) { @@ -1045,8 +1057,8 @@ int register_pernet_device(struct pernet_operations *ops) int error; down_write(&net_sem); error = register_pernet_operations(&pernet_list, ops); - if (!error && (first_device == &pernet_list)) - first_device = &ops->list; + if (!error) + update_first_on_add(first_device, &pernet_list, &ops->list); up_write(&net_sem); return error; } @@ -1064,8 +1076,7 @@ EXPORT_SYMBOL_GPL(register_pernet_device); void unregister_pernet_device(struct pernet_operations *ops) { down_write(&net_sem); - if (&ops->list == first_device) - first_device = first_device->next; + update_first_on_del(first_device, &ops->list); unregister_pernet_operations(ops); up_write(&net_sem); }