From nobody Sun May 10 20:33:48 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7A098C433F5 for ; Mon, 25 Apr 2022 02:24:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240363AbiDYC1a (ORCPT ); Sun, 24 Apr 2022 22:27:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37814 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234410AbiDYC1Q (ORCPT ); Sun, 24 Apr 2022 22:27:16 -0400 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2054.outbound.protection.outlook.com [40.107.92.54]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B861B17AB3; Sun, 24 Apr 2022 19:24:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E/g5bhdwtvpfNkXkuo9R1Yflg70o0Hj4npKaiS8wmjiG8J4jIAAThLIADmTMNHqdAIPR1HFrRuMsI7VFG0pICrFGajQCQ1NQUOau0H/4oajFNF4YWVmwxAP4G5A3LNgsHcDmyFTwF+DvaDB20fAcQsX/Ie3iYJF0piHX98R1zpQEKkGBtFYRxfMxZ+aVkdQ0qomv5z/2LZ6Wohqk88Eixlr0EgNneJDvfd5ZQxgkSgPEmMF13jIjMunX0XgX0rIT+FfTPUTit9PUQj8JuhcFuXQjsE03SMU4PThMZr7fAooAUWBUjiPOhT4K13koZtO3INoQ/XT20yGv/oMHAxp+lQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=O6ctBCXkjsGP3/1xJtzU2rMcAB2pOFmJpZoCIXM4xfo=; b=Xit68eQfw1+pYBKub1KECb7TovIbpl6u4Q4k7sfu4fI/wd5TJhmHIqgKmFR3b5OwKNqvMTrkKkXfwzvLGGAn4Z4dlbyY2N0c3u//0ZFaZZ3pQ+vG3THoRv3+dedVDUXe+HnV1ri2ksUHGoR2BEWt2HASt3KQYUR/A6RBdItc/AECjBMsiPeVawF3GZkTZoe+1tIloEM2cye0Z6tVsW/6vbWOgZdSEh8v8VnqXyUuqDTUwX393bO0xyYkD/p8yyp0kEBFcLPPlWAO1vWGcptF7vvKn3wDMF/r8ypJddaB//mnzCWJjBeMb+2RIhb+Z06lUJo7Bpi81gteF86zKiC50Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=O6ctBCXkjsGP3/1xJtzU2rMcAB2pOFmJpZoCIXM4xfo=; b=I4ccXJIC40K5wa4/kCH66ytytNxOHhj2vyovUBhdeVG5LECRJ1TQO0A4E+tBiyANfpYmgwnIEN/E7kkvGT7BafAsHkqTuJrkLn8CdtuIELuUaj3hQpoMeiqS3IXr+2IckX6G3aqG9akutJXAjN6/QDSGD2Oj5wcyEOQaWM6kQf9gvHP7YtFpVHZIzCP8nDwjjr6fNXFB900KOMq4LI2wUtL7OTvcjP0HCfrsRjk4VW6BZV+7byIRBkYz4b/7xBaqDTr1JYqTKWHt2Wjp+mKkNKRg0nnt7Q8OlSoFsffFGHJBAr/6HJh1qeyfG+6DeKJZ6rPv/QpuXp/yEZBnFY5FuQ== Received: from PH0PR12MB5481.namprd12.prod.outlook.com (2603:10b6:510:d4::15) by DM6PR12MB4219.namprd12.prod.outlook.com (2603:10b6:5:217::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.14; Mon, 25 Apr 2022 02:24:10 +0000 Received: from PH0PR12MB5481.namprd12.prod.outlook.com ([fe80::489d:7d33:3194:b854]) by PH0PR12MB5481.namprd12.prod.outlook.com ([fe80::489d:7d33:3194:b854%3]) with mapi id 15.20.5186.021; Mon, 25 Apr 2022 02:24:10 +0000 From: Parav Pandit To: =?utf-8?B?5byg5bm/6L6J?= , Roi Dayan , Saeed Mahameed , Jason Gunthorpe , gregkh CC: "linux-kernel " , stable Subject: RE: Fix a devlink AB-BA deadlock on net namespace deletion Thread-Topic: Fix a devlink AB-BA deadlock on net namespace deletion Thread-Index: AQHYV6DhgiuGX97ve0Co2351zn+4faz/5wEQ Date: Mon, 25 Apr 2022 02:24:10 +0000 Message-ID: References: <342746123.81421.1650369512240.JavaMail.xmail@ma-wm-1-new> <2141729194.2508.1650780142235.JavaMail.xmail@wm-2-new> In-Reply-To: <2141729194.2508.1650780142235.JavaMail.xmail@wm-2-new> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9e142d1a-ae60-4366-481f-08da2662aebb x-ms-traffictypediagnostic: DM6PR12MB4219:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: hkhiTgHaVKugMlO63eyB9pK8TzdkFyphfK48LkUO9mfh984QDzbWHz+llnYJPgr6xrVLqOSMLn25pWpirxGsBeyDHkahRB30GSglM5DKILkmzOkwp/qwdRdbsKRI0xpT8v5BWTKsr/d7hOSP4ccBs8dy4B3aauoqtw69sPF7TghXt7X6CsJ+0put1Wve2j5vESwLKANU1KQw4lyAiaPbXPFAE8++lWvosIa03lvCJgJ5/WLSGUUDg3h922ogFrw8WgQgmQXcxKRb4I/e6pe9DmBZBAy+k3n3DPRdt8Xter15J3I/HzdU5kSbQrfhZrdnQFYBDHgPsVmYC+q1q00Dt/ruUvfX8GsEWOFrUdCDys+FazbMXfEnuA2uboSdWkj+l0F8F0DcX/fCuU7MqXQADm7SJ5X78no1avQWp2Tu2Ph8AAQrJD6+6bXE7+mgEUAmSxXrvYzhQekg+DkfsQt0I/LSm8En5AlOD7k9RnLGFIagINqyCNhtW9lWReb5ITBqTxXucUMY30wzPSAVGCh9zMR7RZhhrzC0miNAQTC52FC4X0XkGj6L+oIqfkZdhNyNBuYt2PYGeezJzR4CpS70+mQNku1V5E2rJ349alcATixFqDKfQFAsm32xBFYlySmNaHSXuWoRuGSC8ugyYMHqZeaanjRCdg6IkAgrEqxDVotk2/Ikf5CoCs8dG93s9YNPgVJ8EM4G+r7Rec3x46KixQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR12MB5481.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(6506007)(2906002)(7696005)(5660300002)(53546011)(8936002)(186003)(9686003)(26005)(83380400001)(508600001)(55016003)(33656002)(110136005)(4326008)(316002)(54906003)(52536014)(122000001)(66946007)(38070700005)(38100700002)(71200400001)(8676002)(66556008)(66476007)(66446008)(64756008)(86362001)(76116006);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WEl2QkZSNXZwUkc1KzZvUmVnTkUzRG13RHNIVmhNK1FCdTNCako5Vk8yTHBv?= =?utf-8?B?VnRPRytJekZLWWNtWHRRWktUQjNpT09iQ1M3U2YxNUxNOGZmNzE0anozS2Uw?= =?utf-8?B?Z3dCNDJBR3d3NWlCeXlKUnlzNFJLR0dacERqclI4bE50eXNRa0RUbGZyYktq?= =?utf-8?B?ZVJyNXlTWVI0eERmVzkyNkRxVjlPLzlYWmY3NnRVcTJWM20xTlNhSWRCS2li?= =?utf-8?B?TmRORWlyeUlVZTNZdDJweVAxMlliZ2pWWm5jc3lXTE5yOUVCSEExaTV3amNF?= =?utf-8?B?Sy9kRDlLUDNra1lkU0lpT1N3TWRjYlZwTXNzUm40eStNZ0swZXBQVFhyODIy?= =?utf-8?B?aGtzK3FBWUhOOGppTzBONTUzNEFVTGJGQitLaHBTR3hKYXdYMnhma3pGTUV3?= =?utf-8?B?Q3dzSkhvbFdmQXR3RjNUdE8wcnZGSnUwWkJzeGp4THR5UlJuZWNnRWc4YVVD?= =?utf-8?B?ZFhDWkY3TTAvTWJZaHQ5cnh2cG5ReGlkNDZPM25Fa1k1UTg1T3ZpZUZKZEVU?= =?utf-8?B?RExMdklLZEM5SkltRW1JN0l1OTdaTGRURU5LZ3A3Ty8veml0K1ZCVWc5KzJi?= =?utf-8?B?K1FLY2taMFhiYWhEbEl5anFpeTNWblpmR2ZGcWtua3JTUXZFU3dkZkhKZGsz?= =?utf-8?B?MlY4cElJSzEvMUFKKy93cWhlUnhzRDNxZGdicW1ueEg0Q0p0ZytsNmhNWktR?= =?utf-8?B?dHdxbEpRcUc5Njk3SUY5S1FXVTRSS0pCRHZWd2JEeUhvbVpWV1d0SS9aYkVv?= =?utf-8?B?VmNQWWRzRllZZ0dJM3VITHpzMmFXY3JJN01qTSt3c3NjNXl0WkVUTHhlOGZs?= =?utf-8?B?a0ppbU9SRm0rbEFRUnpSaDRtQmNvWXJ4TVJMQUJMam1QdkViZTBJN3MyM2N5?= =?utf-8?B?ZmdVL2ptbGYvNU5zaFdoRmxMVHEyVE4zaENCSldhUTV3THkyc3BSTWhxeUNQ?= =?utf-8?B?U1Q4cjB0MmxwMEpLNjFRbHJvVXE0SGZlZUVvZ1p2Uml0UDNGT3RPWDZIcGJm?= =?utf-8?B?UURWMUpQZGNxY0s0cDh2R0tNQmk3VzJCdFVNcDZpMDRmSUVMbHl0NmhDbHlX?= =?utf-8?B?SDhXWXg2QzVtMG4wWmQzZHdReWVTSElaWWhrMTZ5eWdraVJ6NitPMFJubENk?= =?utf-8?B?MjNlYWdubUdPeVlESlNoOURsNG9UREZwa1F0SUJFdlhrSGdnMzZvcFpOQm9X?= =?utf-8?B?M1FjY1NnS2s2NlVXeEtzS1lIKzZiWCtSdjZSSlhhQXA2MkdNOE0vVnRlQUIy?= =?utf-8?B?cGJVQStJTjh1c3Z1R0UwbHFyajVoMzdhUzRuUGg0bGUzZXdzNmVLOUN6anlV?= =?utf-8?B?QUJEaXdUZXRYeU8xWTU3Rm1tbThnQmkzUjVpRmNXbTlOcW02TDA4MDVyUmpD?= =?utf-8?B?UC80ZEdaTUJkTzZHLzJhaTRFdVVQOWIxeS84K05JaW14Q3dGdmtIbXJteC9o?= =?utf-8?B?cDUrU1p6Q2NLWnEycEFod280MS9VcFM4blRESVBFY2ZuTzdmUVFSeGc0OGNB?= =?utf-8?B?OWFHWTRKeVplbGdEODhPRmJHZGpxOFo4M2JlZEptSEZRWVhFcHc2SFl1TXB1?= =?utf-8?B?RHpQWG8xSkM2dXVIRHZTMFRlYUlXajdjUnVRamhmazlXQzRNOW5vaVZxZ3dt?= =?utf-8?B?RW40UWhVM29lczJ2dUxDWUllNVZES0l3VXR5bENJa3JEZWhwR1M2L0VWSjl4?= =?utf-8?B?VUIyOC9GajdxczhEOHZsZ3ozOFcwc085TFRwN0xtV3NTbkFQekFKUmNXNCs2?= =?utf-8?B?TEhtWlRZT3haVktZRG8xRzlVNHUybE12MTZodWYwbVBwbmtRNE81c0VyTHlR?= =?utf-8?B?YWNQdkQ4TWowcnJjcm4vSk9oRGV0L2lOUjhlSXZJY2FPbTU4Q1RuOVZYWXRw?= =?utf-8?B?NnNURUs2aXd5bXd5anBPNmErb25wem4rMkFRNjljdldtblZBQjRTaXVOVjBw?= =?utf-8?B?NGx6dlpSRHQrMEpVMWNiV01Eby90ZmpBZGVPdWE1TVZvaFI0NVVCUFpRQXJI?= =?utf-8?B?QzQ0Nmt3THZEN2NaUWV6RU5LQ1VhcVk2dFdkdkF4Zzg1RExNUklBZS9FZGYw?= =?utf-8?B?WjVWL0hQOXNscUZsMkhSTURrUXdLcFJXRmlrOXY1cjdmVlRYWSt4TkhTVklR?= =?utf-8?B?dlVsYXdNdTQ1OGVhRWJTTVNoY2RHUk11N0QreXorTzNDZzY5cmRoK0o1a3FT?= =?utf-8?B?RzRhVUZNOXBTd2RyMCtNRm1NZXVZSnp0eXdQc05Tc0hwVWJNZzZkVUhETVBi?= =?utf-8?B?bFJQUi84YnRORzA5TUc3M0lmZFFMSE5wRWVPVkQ2U1IxS2VCMytpLzR1THk3?= =?utf-8?Q?1fyzZgF0Q6ZoW5cCqI?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR12MB5481.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9e142d1a-ae60-4366-481f-08da2662aebb X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Apr 2022 02:24:10.6193 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: e6o/JrEcwApXyUYTDPWo3vsOemMVIjArECaTwrC0aDjNlxGn/jJ0HC4fVKXRNQNWMnd9D3HXMU4JJ2i/qaDMxQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4219 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Did you audit if it is safe to not hold the pernet_ops_rwsem when traversin= g the pernet_list list? Last time several months back when I reviewed this area for this issue, it = appeared that pernet_ops_rwsem must be held while traversing pernet_list. You also need to fix the mail client to send text only patches. From: =E5=BC=A0=E5=B9=BF=E8=BE=89 =20 Sent: Sunday, April 24, 2022 2:02 AM To: =E5=BC=A0=E5=B9=BF=E8=BE=89 ; Roi Dayan ; Saeed Mahameed ; Parav Pandit ; Jason Gunthorpe ; gregkh Cc: linux-kernel ; stable Subject: Fix a devlink AB-BA deadlock on net namespace deletion =EF=BB=BFHi=C2=A0 all Deleting a netns holds pernet_ops_rwsem and then takes devlink_mutex.=C2=A0 at that time changing mode to switchdev, holds the devlink_mutex, unregiste= red to netdevice notifier and then takes pernet_ops_rwsem.=C2=A0 So AB-BA deadlock problem can happen. I have made a patch to fix the deadlo= ck problem, it work well.=C2=A0please help with the review.=C2=A0Thanks=C2= =A0 =C2=A0Example sequence is:=C2=A0 \$ ip netns add foo \$ ip netns del foo &=C2=A0 \$ devlink=C2=A0 dev eswitch set pci/0000:af:00.1 mode switchdev Process A:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 P= rocess B: cleanup_net()=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0genl_family_rcv_msg_doit=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0down_read(&pernet_ops_rwsem);=C2=A0<-=C2=A0first=C2=A0sem=C2=A0= acquired=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0ops_pre_exit_list()=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0pre_doit=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0devlink_nl_pre_doit=C2=A0mutex_lock(&devlink_mutex);=C2= =A0<-first=C2=A0devlink_mutex=C2=A0acquired =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0pre_exit() =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0devlink_pernet_pre_ex= it()=C2=A0mutex_lock(&devlink_mutex);<-first=C2=A0devlink_mutex=C2=A0acquir= ed =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0dev= link_nl_cmd_eswitch_set_doit =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0mlx5_devlink_eswitch_mode_set=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0mlx5_lag_disable_change =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0mlx5_disable_lag =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0mlx5_rescan_drivers_locked =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0device_del =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0... =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0unregister_netdevice_notifier=C2= =A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0down_write(&pernet_op= s_rwsem);<-=C2=A0first=C2=A0sem=C2=A0acquired =C2=A0 =C2=A0deleting netns trace: [=C2=A0 248.061947] INFO: task kworker/u160:3:1179 blocked for more than 12= 2 seconds. [=C2=A0 248.061953]=C2=A0 =C2=A0 =C2=A0 =C2=A0Not tainted 5.15.13-0.el9.x86= _64 #1 [=C2=A0 248.061955] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disa= bles this message. [=C2=A0 248.061956] task:kworker/u160:3=C2=A0 state:D stack:=C2=A0 =C2=A0 0= pid: 1179 ppid:=C2=A0 =C2=A0 =C2=A02 flags:0x00004000 [=C2=A0 248.061962] Workqueue: netns cleanup_net [=C2=A0 248.061970] Call Trace: [=C2=A0 248.061972]=C2=A0 [=C2=A0 248.061975]=C2=A0 __schedule+0x200/0x540 [=C2=A0 248.061982]=C2=A0 schedule+0x44/0xa0 [=C2=A0 248.061984]=C2=A0 schedule_preempt_disabled+0xa/0x10 [=C2=A0 248.061986]=C2=A0 __mutex_lock.constprop.0+0x212/0x400 [=C2=A0 248.061989]=C2=A0 devlink_pernet_pre_exit+0x2a/0x140 [=C2=A0 248.061994]=C2=A0 cleanup_net+0x1d2/0x3a0 [=C2=A0 248.061997]=C2=A0 process_one_work+0x1e8/0x390 [=C2=A0 248.062003]=C2=A0 worker_thread+0x53/0x3c0 [=C2=A0 248.062005]=C2=A0 ? process_one_work+0x390/0x390 [=C2=A0 248.062007]=C2=A0 kthread+0x10c/0x130 [=C2=A0 248.062011]=C2=A0 ? set_kthread_struct+0x40/0x40 [=C2=A0 248.062014]=C2=A0 ret_from_fork+0x1f/0x30 [=C2=A0 248.062020]=C2=A0 changing mode to switchdev trace: [=C2=A0 248.062078] task:devlink=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0state:D s= tack:=C2=A0 =C2=A0 0 pid: 8546 ppid:=C2=A0 8542 flags:0x00004000 [=C2=A0 248.062081] Call Trace: [=C2=A0 248.062082]=C2=A0 [=C2=A0 248.062083]=C2=A0 __schedule+0x200/0x540 [=C2=A0 248.062087]=C2=A0 ? free_msg+0x3f/0xb0 [mlx5_core] [=C2=A0 248.062156]=C2=A0 schedule+0x44/0xa0 [=C2=A0 248.062158]=C2=A0 rwsem_down_write_slowpath+0x19c/0x3c0 [=C2=A0 248.062165]=C2=A0 unregister_netdevice_notifier+0x1c/0xb0 [=C2=A0 248.062168]=C2=A0 mlx5_ib_roce_cleanup+0x8a/0x110 [mlx5_ib] [=C2=A0 248.062184]=C2=A0 mlx5r_remove+0x36/0x60 [mlx5_ib] [=C2=A0 248.062196]=C2=A0 auxiliary_bus_remove+0x18/0x30 [=C2=A0 248.062200]=C2=A0 __device_release_driver+0x177/0x240 [=C2=A0 248.062203]=C2=A0 device_release_driver+0x24/0x30 [=C2=A0 248.062205]=C2=A0 bus_remove_device+0xd8/0x140 [=C2=A0 248.062210]=C2=A0 device_del+0x18b/0x400 [=C2=A0 248.062213]=C2=A0 mlx5_rescan_drivers_locked.part.0+0x7e/0x150 [mlx= 5_core] [=C2=A0 248.062267]=C2=A0 mlx5_disable_lag+0x149/0x160 [mlx5_core] [=C2=A0 248.062318]=C2=A0 mlx5_lag_disable_change+0x60/0xa0 [mlx5_core] [=C2=A0 248.062369]=C2=A0 mlx5_devlink_eswitch_mode_set+0x4b/0x1a0 [mlx5_co= re] [=C2=A0 248.062436]=C2=A0 devlink_nl_cmd_eswitch_set_doit+0xc1/0x150 [=C2=A0 248.062440]=C2=A0 genl_family_rcv_msg_doit+0xe7/0x150 [=C2=A0 248.062445]=C2=A0 genl_rcv_msg+0xdc/0x1e0 [=C2=A0 248.062448]=C2=A0 ? __devlink_port_phys_port_name_get+0x1e0/0x1e0 [=C2=A0 248.062451]=C2=A0 ? genl_get_cmd+0xd0/0xd0 [=C2=A0 248.062454]=C2=A0 netlink_rcv_skb+0x4e/0xf0 [=C2=A0 248.062457]=C2=A0 genl_rcv+0x24/0x40 [=C2=A0 248.062460]=C2=A0 netlink_unicast+0x1fe/0x2d0 [=C2=A0 248.062463]=C2=A0 netlink_sendmsg+0x24f/0x4b0 [=C2=A0 248.062466]=C2=A0 sock_sendmsg+0x5b/0x60 [=C2=A0 248.062469]=C2=A0 __sys_sendto+0xf0/0x160 [=C2=A0 248.062473]=C2=A0 ? handle_mm_fault+0xbf/0x280 [=C2=A0 248.062478]=C2=A0 ? do_user_addr_fault+0x1d0/0x670 [=C2=A0 248.062482]=C2=A0 __x64_sys_sendto+0x20/0x30 [=C2=A0 248.062484]=C2=A0 do_syscall_64+0x38/0x90 [=C2=A0 248.062487]=C2=A0 entry_SYSCALL_64_after_hwframe+0x44/0xae [=C2=A0 248.062492] RIP: 0033:0x7ff8cc469c3a [=C2=A0 248.062494] RSP: 002b:00007ffe06025e08 EFLAGS: 00000246 ORIG_RAX: 0= 00000000000002c [=C2=A0 248.062497] RAX: ffffffffffffffda RBX: 0000000000000006 RCX: 00007f= f8cc469c3a [=C2=A0 248.062499] RDX: 0000000000000038 RSI: 000055c261bf7440 RDI: 000000= 0000000003 [=C2=A0 248.062501] RBP: 0000000000000000 R08: 00007ff8cc52d200 R09: 000000= 000000000c [=C2=A0 248.062502] R10: 0000000000000000 R11: 0000000000000246 R12: 000000= 0000000000 [=C2=A0 248.062503] R13: 000055c261bf72a0 R14: 000055c260a01d5c R15: 000055= c261bf7440 [=C2=A0 248.062505]=C2=A0 the patch details:=C2=A0 diff --git a/linux/net/core/net_namespace.c b/linux/net/core/net_namespace.c index 202fa5eac..5c872db1f 100644 --- a/linux/net/core/net_namespace.c +++ b/linux/net/core/net_namespace.c @@ -576,6 +576,7 @@ static void cleanup_net(struct work_struct *work) =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 list_add_tail(&net-= >exit_list, &net_exit_list); =C2=A0 =C2=A0 =C2=A0 =C2=A0 } +=C2=A0 =C2=A0 =C2=A0 =C2=A0up_read(&pernet_ops_rwsem); =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* Run all of the network namespace pre_exit me= thods */ =C2=A0 =C2=A0 =C2=A0 =C2=A0 list_for_each_entry_reverse(ops, &pernet_list, = list) =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ops_pre_exit_list(o= ps, &net_exit_list); @@ -596,7 +597,6 @@ static void cleanup_net(struct work_struct *work) =C2=A0 =C2=A0 =C2=A0 =C2=A0 list_for_each_entry_reverse(ops, &pernet_list, = list) =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ops_free_list(ops, = &net_exit_list); -=C2=A0 =C2=A0 =C2=A0 =C2=A0up_read(&pernet_ops_rwsem); =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* Ensure there are no outstanding rcu callback= s using this =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* network namespace. =C2=A0