From patchwork Wed Jun 20 08:57:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kirill Tkhai X-Patchwork-Id: 932049 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=virtuozzo.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="MB/znYLg"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 419dyS2TCgz9s2L for ; Wed, 20 Jun 2018 18:57:52 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933258AbeFTI5s (ORCPT ); Wed, 20 Jun 2018 04:57:48 -0400 Received: from mail-eopbgr50139.outbound.protection.outlook.com ([40.107.5.139]:51296 "EHLO EUR03-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933225AbeFTI5l (ORCPT ); Wed, 20 Jun 2018 04:57:41 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Svf8P+weEMWBad9uw/hdoflPVsS2GSLo5umLH58vwyg=; b=MB/znYLg7J8buD4ubYF7pZEuEIyFY3HBUa9kPzSXSKml0JTmz+uk+6ESTh/em3+m/arcCSsSZLvSou3BzpyrCQh9mDRnPXU5HDlTQCp1OHVvv41IuGBqJr9hyeFtTu/r4oKr8fjrWaMqfRjnL7oerG6PmCbLfDwWL6/yaP4BOJo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=ktkhai@virtuozzo.com; Received: from [172.16.25.5] (195.214.232.6) by HE1PR0801MB1337.eurprd08.prod.outlook.com (2603:10a6:3:39::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.863.15; Wed, 20 Jun 2018 08:57:37 +0000 Subject: [PATCH] net: Fix device name resolving crash in default_device_exit() From: Kirill Tkhai To: David Ahern , netdev@vger.kernel.org Cc: davem@davemloft.net, daniel@iogearbox.net, jakub.kicinski@netronome.com, ast@kernel.org, linux@rasmusvillemoes.dk, john.fastabend@gmail.com, brouer@redhat.com References: <152897987484.3952.9263337756183251797.stgit@localhost.localdomain> <3c024347-a60e-69aa-42c9-fcb6244642cb@gmail.com> <25e1a375-051c-54f4-d5cb-677e281107fb@virtuozzo.com> <70df65eb-3ef6-20ca-be07-8d73e4e63bea@virtuozzo.com> Message-ID: <88c1a635-4404-253b-6144-d7f3f9779531@virtuozzo.com> Date: Wed, 20 Jun 2018 11:57:31 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: <70df65eb-3ef6-20ca-be07-8d73e4e63bea@virtuozzo.com> Content-Language: en-US X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR0901CA0053.eurprd09.prod.outlook.com (2603:10a6:3:45::21) To HE1PR0801MB1337.eurprd08.prod.outlook.com (2603:10a6:3:39::27) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4250627d-7005-45ac-e2fe-08d5d68bdf3e X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(5600026)(711020)(2017052603328)(7153060)(7193020); SRVR:HE1PR0801MB1337; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1337; 3:RilTW3Z7Z4jGEYaHYYSIWQpqgqxK4iBz6FRq4/RZBaeCrOsYnQQJWLbt/32pUgwH4oNpusQ+49UtNIcQOkMF9GBYlK7FD7QA/PudUt8QzAEFIiX/rNT8hulRD2+osMZ9GO87yB/vpQe1EIzBMrxbHY7dAEuCRZAgu8FB0oU3xrYwPyew2pWJtx4q/smCHD9vhfJAKCRYy64yvI1lW8Ojr40J9QSJwOzc2pLj1l+LEyENNPpDwhJMByOCRCAiNuX6; 25:1TQdszUwKd6ug5ArGWq2eppEB9sF7Kev+LtfyxLKzC71eTe6u5x23TOVa2TSTK2mVUPcC0TBdDf9OXFgRa8F+e/mGrGQxzYVBrVzqqI5RxFqIIKzm3OjklwlKjI0yN5DmGWGCueHqs2PDJGCvmqEu1Qbi08hDDtGgnF3l5qhpRqpHXi/a2B8GJB2p+RXkW/ISCqEeMI9Wo8eCl2cM9OtoROgQOV1SixWvG0f4AItq48pZIVsTAhrPNMgetmL5naGgw4/6EZPQGlPBfGn6GCDkvMQdWF2VSxsHIwG/G//OyTbWcxUIHEJIHr84nx2taJE+MuLjYVF9R0gUXSO2a/bLA==; 31:PfeVg6NoxyC6hFEFepPzXL6Sm+39iQdBsCaYbBFsVRUF/mykfAd2FHLLgJn4lgAgBmKRv1hslQaCsPQjY6zESQf4Vzq6CBzEeU+hahgPZRde9ERgf6qL+noMyzLZdmxbGdFGy4M/MQFsEt3oBEKrc1nY/kE1P18GcKe0WH/XAgDM2p9RYxFAwmDrCwp9+Q+TahI476akw530jnUIx57CXUDqL0ejVOQ9cl4E428rNmM= X-MS-TrafficTypeDiagnostic: HE1PR0801MB1337: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1337; 20:5eaJ+wvyPYh1mOddr9zGK0GrxaVSAx4ifrPGWiK9/Sp89R4mb4C6ug7jC1YK8Tzs4MxUXQ9mBopS3D/KzEYI8yXTmvrMhyCaKMAVmGOHKCD1PTjl/04xcFlMLLlu6eLImZdhJPjo+Rmx/nMa8P1IlxVpJCAvlEAMCNSAnSEpMPDovS2OV0na25+EVi+p8mVGDhRGEzSU1OHDglriDdQ6t7Jnj5pZWENNtD7yO480D2fAB6UwO7mWwG9nBTRAgQ8IY9dagsFOYd/x55eWtoHTuD03XkVzBLUtV56llvL03CWmBhT5cjxlrIuXlJPX6LAqiOVJk5++n+6gpgSABVl8b6v+KVPIqt+I2+Kkg8k/sZmnqV6ERCNmNQwZxpafiLMT9MhHyS7ABySh7HlXlTl8vbDg4Dvz40+CynrJZYEmafjt5iTn4/lhj26ltrkOR9mWEoDKb44AJ+FQYWx2OdbVjgv3yhg/d15Vkw5tFSSztYl+ZU06KnfQPZCWM5vo/DeS; 4:1iTK8GnBvJdusMrUcYO7+QJf/EEyhiUui1iVREyXP54/fuljUkIJkIb8t2bfO1xNvx+wKFGozLgkGTB53V6xf0LAOyXH1KhMOZvOf2S7wdel0toG4hyqkHu/WdJQu7dwpfWVK16l/j9MYirUcVoxgcZQEAA+SXIAwTmKDH8MI63MeHG3HliBSn8zxxbeM2YiUlQBYaO2yXn83wEI1VWkyW6LWSB/yOzS188+UUDfKW4VOtyy9fYmoKDR+ktHZ4ijQl8PWCnV+XIHfD4RNmHSTQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(5005006)(8121501046)(3231254)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(149027)(150027)(6041310)(20161123558120)(20161123564045)(20161123560045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:HE1PR0801MB1337; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0801MB1337; X-Forefront-PRVS: 070912876F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(979002)(6049001)(39850400004)(396003)(366004)(39380400002)(346002)(376002)(51234002)(189003)(199004)(476003)(486006)(25786009)(47776003)(65826007)(5660300001)(478600001)(7736002)(11346002)(77096007)(956004)(446003)(106356001)(230700001)(2616005)(8676002)(26005)(64126003)(93886005)(2906002)(105586002)(55236004)(68736007)(97736004)(66066001)(6666003)(39060400002)(65956001)(186003)(16526019)(65806001)(36756003)(53936002)(305945005)(4326008)(8936002)(86362001)(81156014)(81166006)(50466002)(6486002)(3846002)(316002)(2486003)(16576012)(76176011)(31696002)(31686004)(58126008)(52116002)(52146003)(23676004)(6116002)(386003)(59450400001)(1857600001)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0801MB1337; H:[172.16.25.5]; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BHE1PR0801MB1337=3B23=3Ai4?= =?utf-8?q?v23jpqXO2gmJelb4vA12TOc8fC2KF6ftKrTu64jjZ3Ap/fUJbc/6Q80x?= =?utf-8?q?zZWJnv5xWWh1q55qlMplVGfQo0BtGHMwXfn/EbcifBMuxtAGnYOIPtDo?= =?utf-8?q?eOd+spJL7sqCz9QPr/yvQQBLmYsaMv9ZdAXUZR+nYj1nrFHr47mHrSYc?= =?utf-8?q?IE8eQy4yWFxF2T+kr5RgwICO+dGLaz1CSgZEpvWqu0rMHGa8t5uP2dlH?= =?utf-8?q?P+1A8j2LNCuL5NPdn7sojjZ+lTqTvN+3Lfgq87vLbSTZkqDWB+9fwHui?= =?utf-8?q?ePAQ5g39feFDNt15dw0ZyXLnc1Ra+un09XQInaBnVJMDkqgUBVOBaeIE?= =?utf-8?q?0UBLn6CZZydKu/5JhUtbP8dtsEQ11XZOp6RO5CkcGfb6+9F9h7Volbyz?= =?utf-8?q?JOkThRzi5iRvfNN9RthwdfS0l07zjolJhgkijjZPL40oMbV/ozvw7cp5?= =?utf-8?q?RjNkXC4ISDKnI4ROiHJrWKZ4Z1RWdL1k/oLKkfW+gE3sWoCdBcFbEuJJ?= =?utf-8?q?5SDxokgq0EiRK1v4OFL5ZeInrHgs64532Cz81CTIRvzlsllzg+AMIGAW?= =?utf-8?q?Z+pOVsoILwH2jePDBe1iMiIIwLZhwMRPL91A3aTmms7jkNsJ5RBl1XZJ?= =?utf-8?q?mvKqzqqbEcmDnqx6j+J2E9IZ7UyB0rC5Q69Jc3Gqja+42IcWGxRXb482?= =?utf-8?q?kRt2ruWm6Mde2mkUx4a+f6claLB50tUsusUUherigHthB/R4O9UA6kOw?= =?utf-8?q?lCjCbNjGP+/zM7IABoxE5ve1w/39FIZ9BpjM26usEnHtg+Vy9ACAx/ha?= =?utf-8?q?QZDijZmSEv/TjdteVik9RzkSwsiYA3TwVHdQcYGvxcr1zuzzuoiZNwbP?= =?utf-8?q?kTYFIXKiQ8NB3ud8CljKEgnonS960eIELLuD64zcJU5/g9BGnM84mDcl?= =?utf-8?q?6xjJ+NiksHJzNBXXcv7jj2v/d7lHFy3NRaLDnYaQ8/o+Xq5GOuyh32GP?= =?utf-8?q?JXLU6z4T648ZufN7GAkwfGxvieSgLfJYLv/7eIBltM+NUex9IPVPFwqr?= =?utf-8?q?OcVTkPMpP0ipn+IeZIPbSEqMEHvXevzr6OpFFFhQNnYWC0ljx0Lh8L2o?= =?utf-8?q?50mHrQmNLXGrpke+NmaNO8377TQD9Gf9oiTJzekk7jW+1kOz0bfrDoes?= =?utf-8?q?0xDWTdbXLTL8HnvUMbfLT0CL0u1YHApyUl9f2ELoZ0GF2v9VOcO46ngh?= =?utf-8?q?QT6HG5eduhCZUoCgN4s7DfaKFwPDMEfLBhFbM2mRi2cKB2GOTKbSibQ0?= =?utf-8?q?471lBMOVQzFC6ZxNTl8RvZ3zyTB855OvswIwKz45jjNQA/GsvltJvwPY?= =?utf-8?q?CkwR9SFslGAiyjVTrhuj5wJRSSD4cpZG7Wz/mgp6MIQnZJJ3wv/x6GRE?= =?utf-8?q?z/wXQU27uLCWh7/K/ux5rBbW0xpbZc4IWiq8XACFevkUqomRUnAM8meU?= =?utf-8?q?gDbrL6Y8+X6bo5moT4QE/DjQv7CCWdu81No6+0cSU0dFwV9wvv6JSFL8?= =?utf-8?q?ds2uX9i7fMCNsps08GVkolgiuQF4jlekBLrBzFSWjpJJdHdwFhhggQ9J?= =?utf-8?q?GwV2hnbXVaEsHi8IdHOxvwXjH87cjLCVVPXNHOvzQmvl86Orvo3lSOQi?= =?utf-8?q?4Yr+jyCz4=3D?= X-Microsoft-Antispam-Message-Info: zrpck/awuMGQWemAcCx4HL4kmpy8pQJ2KRRz04cPWZZSGpamCtNzUl2+Q/IlFhVfjgwX7Nz8bDaV0j+w0wd4aHTwr+I3pBUanjS+scKfa85pbNHT6x/XwP20SIUsEGl0o3GVohB4IfuIBA4PKrGGB5IQ99cNdUS2OHVvYFkkyltSlVfBQS3XEQDRwu+zqC8lpU09lwtBwdxHMBcKd/g63/mS+I4Q8hkR0IovKmeuB69F5fcY4hpYivtBws2BZ2wxyPL1WiRLB0hlGve2GM35YoAzsX1abSzUwSbhPJwZtOBjANYDbfZrz2dDZxVWkimaoPlmaO2vpktckyZIWoNrvg== X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1337; 6:ibe+Pc9y87n7Ddj59xZExVmQoXoMejt+KC62DAWrJxmusHFg6wLTadQ4jKt3fk5KjONT9EFhgZhukpYSUJyjgVLyAK/gEUJBjxM0OJA/6mph26bxCC9ZiUtuS1ICP+GKn6aowUhYRnNxchRBO1mHXZTGea3uvk/hlioZirkDZ7ZYb4D1C23zx7J7WEzVl2MFQr0PQy4Lw/xwsC6uiYJJbSZERc7CpgMF5aaQN4ieu4kQT38yBvoG3QR0ina7BNn+80nW+H/TiMKiuwmkuGDfKJMoe6fDOTfW/Jbukdnoz7v911kNCgNx+ZnqTMeoEZBZOS+M3IsXk2G9WjM+3/AVWXrS94pXk0uVl/7fbG4zPSJOZ6qXI1T7HRRJ/DOxHXnaDYzpawGeN4HzsTcEgcgjqz+4LltxOgmyyEoGHEkzbTm7iy9StzTUwB7fTqPEKlr370UCMVIkMUOLYi7F5HLYAA==; 5:kGLJY4DTxR/TveUUxC2Cj0y/x5NwNbGKgWwPT3NRf4NPaarqAwGVJDjLyO6hQHBpWsz8As/mA1SwcYLQQcgetZV+BiodeSLUtgIBDproZEvF0z9Bk4QlX3tK//DhtsZzdCLkgtxdAjcSkM9ZZozbuj0fl5O51ygmn+fYGbIN2sw=; 24:Q+bw7cOZB01TDKSF8+rM0iYxGCKNB4dEWRsf4m/VA9hQlHIZrd5vDTjbkpI9Wd/jI+YCa6cbjI+Lu5Gdd/6ZemIzgod8uqf/ls9xV3piIkI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1337; 7:OiOPm9nUKizBcLaUj9HGmjbNPp9P4DPyAS86RPEWjLK9ZFNdbi5LwzBvZtozDTkOPY03BQ6+6uskVdC7PnxoMO2kQpWB3jx+W7uLYI5n0qBt/y82nRfPeHFsapyIyY4aILQyYbv+T2CcI9Rf47rW4NbUVtXguYzpvXIY8CMt6hIbJ8MO5iRfjnq5GbrYyiypBSOLko0lyfiAXFQojOw83r32BpcMkBBhp1f0MCEmAHIP11PS9xi2m9PGRUVmgUK+; 20:rYD/uGLirNqM4cyKa3YsD1eo1r2KXXdita5bysKMK/+CHv8W1o5je6DfouYrhCYKnmVfIBzOp5AzUNNKsV3fgq/+Zpg9h6CIOySRpsYDhNtexDNLqj0pyO2xmLBFvQwnv+qBdsxtY33nwpENMlN6eYhbpTDFCNQQTVbdzKVog8g= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jun 2018 08:57:37.3125 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4250627d-7005-45ac-e2fe-08d5d68bdf3e X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1337 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Kirill Tkhai The following script makes kernel to crash since it can't obtain a name for a device, when the name is occupied by another device: #!/bin/bash ifconfig eth0 down ifconfig eth1 down index=`cat /sys/class/net/eth1/ifindex` ip link set eth1 name dev$index unshare -n sleep 1h & pid=$! while [[ "`readlink /proc/self/ns/net`" == "`readlink /proc/$pid/ns/net`" ]]; do continue; done ip link set dev$index netns $pid ip link set eth0 name dev$index kill -9 $pid Kernel messages: virtio_net virtio1 dev3: renamed from eth1 virtio_net virtio0 dev3: renamed from eth0 default_device_exit: failed to move dev3 to init_net: -17 ------------[ cut here ]------------ kernel BUG at net/core/dev.c:8978! invalid opcode: 0000 [#1] PREEMPT SMP CPU: 1 PID: 276 Comm: kworker/u8:3 Not tainted 4.17.0+ #292 Workqueue: netns cleanup_net RIP: 0010:default_device_exit+0x9c/0xb0 [stack trace snipped] This patch gives more variability during choosing new name of device and fixes the problem. Signed-off-by: Kirill Tkhai --- Since there is no suggestions how to fix this in another way, I'm resending the patch. net/core/dev.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/net/core/dev.c b/net/core/dev.c index 6e18242a1cae..6c9b9303ded6 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -8959,7 +8959,6 @@ static void __net_exit default_device_exit(struct net *net) rtnl_lock(); for_each_netdev_safe(net, dev, aux) { int err; - char fb_name[IFNAMSIZ]; /* Ignore unmoveable devices (i.e. loopback) */ if (dev->features & NETIF_F_NETNS_LOCAL) @@ -8970,8 +8969,7 @@ static void __net_exit default_device_exit(struct net *net) continue; /* Push remaining network devices to init_net */ - snprintf(fb_name, IFNAMSIZ, "dev%d", dev->ifindex); - err = dev_change_net_namespace(dev, &init_net, fb_name); + err = dev_change_net_namespace(dev, &init_net, "dev%d"); if (err) { pr_emerg("%s: failed to move %s to init_net: %d\n", __func__, dev->name, err);