From patchwork Thu Feb 4 22:57:31 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 8228961 Return-Path: X-Original-To: patchwork-linux-rdma@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id C153A9F8AA for ; Thu, 4 Feb 2016 22:57:52 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 92E3D2021A for ; Thu, 4 Feb 2016 22:57:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0FC5C20212 for ; Thu, 4 Feb 2016 22:57:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934308AbcBDW5p (ORCPT ); Thu, 4 Feb 2016 17:57:45 -0500 Received: from mail-bn1on0094.outbound.protection.outlook.com ([157.56.110.94]:16320 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S934300AbcBDW5j (ORCPT ); Thu, 4 Feb 2016 17:57:39 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sandiskcorp.onmicrosoft.com; s=selector1-sandisk-com; h=From:To:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=cDJbTclroANysmgvRiWYLXvXfNgrMyp8SI0z8AA8FaY=; b=VvTpeGi9alTdQw4tQQXFmAeUdRIGPpQLf5q0XkJh4NUzIAD1CTGh/6cpZyLfoHnwJXaYV7xftFeHWwuK1UbtQj232c8+IQfqvqVIKSlLxvLeY3La+VYb3J/f7VU+GSYesXUAmcjv4XJkbXH/9BHeFAfSv7ZXow4l0RjDV+j/N5A= Received: from BY2PR02CA0032.namprd02.prod.outlook.com (10.141.216.22) by BN1PR0201MB0820.namprd02.prod.outlook.com (10.160.170.152) with Microsoft SMTP Server (TLS) id 15.1.390.13; Thu, 4 Feb 2016 22:57:37 +0000 Received: from BN1BFFO11FD050.protection.gbl (2a01:111:f400:7c10::1:187) by BY2PR02CA0032.outlook.office365.com (2a01:111:e400:2c40::22) with Microsoft SMTP Server (TLS) id 15.1.403.16 via Frontend Transport; Thu, 4 Feb 2016 22:57:36 +0000 Authentication-Results: spf=pass (sender IP is 63.163.107.174) smtp.mailfrom=sandisk.com; intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=bestguesspass action=none header.from=sandisk.com; Received-SPF: Pass (protection.outlook.com: domain of sandisk.com designates 63.163.107.174 as permitted sender) receiver=protection.outlook.com; client-ip=63.163.107.174; helo=milsmgep12.sandisk.com; Received: from milsmgep12.sandisk.com (63.163.107.174) by BN1BFFO11FD050.mail.protection.outlook.com (10.58.145.5) with Microsoft SMTP Server id 15.1.409.7 via Frontend Transport; Thu, 4 Feb 2016 22:57:35 +0000 Received: from MILHUBIP03.sdcorp.global.sandisk.com ( [172.22.12.162]) by (Symantec Messaging Gateway) with SMTP id BF.48.03533.C57D3B65; Thu, 4 Feb 2016 14:57:32 -0800 (PST) Received: from milsmgip11.sandisk.com (10.177.8.100) by MILHUBIP03.sdcorp.global.sandisk.com (10.177.9.96) with Microsoft SMTP Server id 14.3.248.2; Thu, 4 Feb 2016 14:57:32 -0800 X-AuditID: ac160a69-bb3ff70000000dcd-68-56b3d75cc6eb Received: from [10.60.52.49] ( [10.177.8.100]) by (Symantec Messaging Gateway) with SMTP id A2.9E.02402.B57D3B65; Thu, 4 Feb 2016 14:57:32 -0800 (PST) Subject: [PATCH v3 16/21] IB/srpt: Use a mutex to protect the channel list To: Doug Ledford References: <56B3D453.7030409@sandisk.com> CC: Christoph Hellwig , Sagi Grimberg , "Alex Estrin" , "linux-rdma@vger.kernel.org" From: Bart Van Assche Message-ID: <56B3D75B.3030202@sandisk.com> Date: Thu, 4 Feb 2016 14:57:31 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1 MIME-Version: 1.0 In-Reply-To: <56B3D453.7030409@sandisk.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrOLMWRmVeSWpSXmKPExsWyRoxnkW7M9c1hBs0TRC0uPP3OZPHy/AdW i5WrjzJZPDvUy2Jxo+0BmwOrx+I9L5k8dt9sYPN4Nv0wk8f7fVfZPD5vkgtgjeKySUnNySxL LdK3S+DKeH59NlvBRc2Kq18XsjYwnlLqYuTgkBAwkdjVrNHFyMUhJLCJUWLGtDPMEM52Ronp O/YwdjFyghX1dU5lgkjMYZQ4deQqM0hCWMBL4vHHr2wgtoiAmsSmV4vYQWwhAS2JqetmsoM0 MAusYpTYdPU6WIJNwEji2/uZLCA2L1DR2/87wAaxCKhIfP7RCDZIVCBC4nBnFztEjaDEyZlP wOo5BbQlVt5axAJyNrOApsT6XfogYWYBeYntb+eAXS0hsJdV4s7054wQR6hLnFwyn2kCo/As JKNmIbTPQtK+gJF5FaNYbmZOcW56aoGhkV5xYl5KZnG2XnJ+7iZGcHRwZe5gXDHJ/BCjAAej Eg9vxurNYUKsiWXFlbmHGCU4mJVEeD9fBQrxpiRWVqUW5ccXleakFh9ilOZgURLntW5RCxMS SE8sSc1OTS1ILYLJMnFwSjUw5gZF3THdt+l2ddKejK+Ji+xey+7g/Na3tPzaj2kfo9/v+3Fb wPDRc73HDUIuF/vPVXNo696OlCgTfeuXGnMnUODHm6Cyfw/Tvm3131J/LWTlFj+jPQv/fij9 ulHXnKdHLmfC97C3N9rrjixJ3it4+ay42M4DryUCJG9Xqpl8lpJ9zJ4/wd3+pBJLcUaioRZz UXEiAB0cDfGKAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrPJMWRmVeSWpSXmKPExsXCtZEjRTfm+uYwg9M9jBYXnn5nsnh5/gOr xcrVR5ksnh3qZbG40faAzYHVY/Gel0weu282sHk8m36YyeP9vqtsHp83yQWwRnHZpKTmZJal FunbJXBlPL8+m63gombF1a8LWRsYTyl1MXJySAiYSPR1TmXqYuTiEBKYxSjx7/VyNpCEsICX xOOPX8FsEQE1iU2vFrGD2EICWhJT181kB2lgFljFKPF75QewIjYBI4lv72eygNi8QEVv/+9g BrFZBFQkPv9oBKsRFYiQONzZxQ5RIyhxcuYTsHpOAW2JlbcWgdnMAuoSf+ZdYoaw5SW2v53D PIGRbxaSlllIymYhKVvAyLyKUSw3M6c4Nz2zwNBQrzgxLyWzOFsvOT93EyM4SDkjdzA+nWh+ iJGJg1OqgVHAbLZM9psDi6Zsbrk5Vy9ht7/Anb/bY/442Ty9efypQV3+72tO7b8TCk+bigX1 Ws+2jZ+x1rJF4PPBbbEWbO/TlpiahAsEyO9aHndhVcr7m79sGRYdD0hiX7PCL1jR68ovI4Vc p9Pz482vOeZnCJ7/yHHk5wIH3aOV+4UfzfT1PfVjUkPoYhYlluKMREMt5qLiRACI40zGAgIA AA== X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD050; 1:PJOoh6euy62x/cHfp+7hIp2XGwSseH0cbSKvHb1Ar6is4wotu3uvSHw4kC1qIFpymEgKA8CplaGPZNh5SZXb1OfgxdesavE+j9XlQYkovQAPpmNOol8fz7mApOz5kmlqkIhygnF2wSaPb2q5R7kCeBBVOh+98Po8fNXaKpqMZdYxWMDt0S/h02/w5hfRn0IcyE8s04NoCd72RJilt6XwtDoMcOYumiPyswsodlQ2aiU9/gr/ZIi8ngIvEd+7oTyxcaT8t5jjddMMB/27ErqoXYSEyEH/lD81awne76hSm5NPVngqVDCGakas1BGpQo40uTj662BjTtXjoAX8kitHbTzTuaYKV1YuUBeZiA2hLtquOd4IBehezSsIV9sCK5k/MffaEqM6uifIeQkLL0dzRg3Nc41A1AeJq9Q4rY/sJX1vs1u38fl8hkwJEoNxwyQ0 X-Forefront-Antispam-Report: CIP:63.163.107.174; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10009020)(979002)(6009001)(2980300002)(438002)(199003)(189002)(2906002)(4326007)(36756003)(5008740100001)(230700001)(83506001)(77096005)(54356999)(586003)(1220700001)(65956001)(4001350100001)(110136002)(65806001)(229853001)(106466001)(2950100001)(64126003)(33656002)(86362001)(59896002)(23676002)(87936001)(50466002)(65816999)(50986999)(87266999)(19580395003)(76176999)(189998001)(80316001)(1096002)(19580405001)(5001960100002)(575784001)(92566002)(47776003)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN1PR0201MB0820; H:milsmgep12.sandisk.com; FPR:; SPF:Pass; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1PR0201MB0820; 2:3X/togK3JyypFka4lt51mlVB6aXC3plumNDzhO4Ot0s9Fv0dwsjICpGj6c0Euglw0c0eJtbSvEPoUOFGkTC5bMGrPb/04SZv10knprGwK/OKw96j4YIBs9xF0OixBFjiVxIeba33/9Ifgnj7LxtS1g==; 3:y17V0SabWiveuQG4gDEcS5KTiiUDbSL0h9DioYAfIHKRfesZrJZci0OZoVt8JiUrK9JpAmUoEe18/mlC0YUfmP0f6GvBdkCW2l5CyGUA0nmzVvdGmTSE5S7Q5LIRvnn7Z/+hgNp0+FsEHpRMb2A9A4ZusQzlo3VIgMagu9x0KMRd29PUCifa1J5iUmBdPgoCGOPE3DoqTzzASKJuzJOl1Y+utAY2iBQh2a7/84xqE/1J/IjTTvzxPVDDkQAxic6KuvGj2IsVy1ke70Sbt5480g==; 25:r9xMTn0K5jcn0/+0uWld7n3qhSomPOomloi4PgscCXEnPGt/Pl5hRRDt24KfEg4hcIMHQ5U2ZQh1g96NBqcPbK+hFtNq/yJxiXVwl39l2AQhFH+rte6avb2hw5/U4NQps6PHXoFnJiVczwTlWilNOQhfq+GhcrR415Keks5dVgKGy+VH/aH+758zTeaJRC5mIKtfElwIgsmnGh2BX95fTHkyfDuhlKwAa5aLBKcjAiTdfXcVv7ESdgg/74y6XrY+ErIaZ1mq2yT0cBnUgTjT0r21VEqdnDsSowHrjvx8F9QwaKByJKaHXl/dhuNvRTC2 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(8251501001); SRVR:BN1PR0201MB0820; X-MS-Office365-Filtering-Correlation-Id: d0b2a3c5-46b8-4fd4-e2b3-08d32db6931e X-Microsoft-Exchange-Diagnostics: 1; BN1PR0201MB0820; 20:ujhB3symtn25W+J7PLYlfGA+rarSEpsgjT+OEC5LeM0H3GGOVd+nbVLojzhUUOqoxmYgSVc9c4WccRF7A7iEL6XuYSZqfOy7d12H4TlR/vMxkrab5oCWwDoTz84IbLsdvouSTOI7hqnrHiuCjV9UQpqabxS+xEKtLBN0++irKhZQgrSpjyLNdQxunl1qusMqdEN5Vz8TCoRU5vZulIwJNJ7X3RaNzPnzLbHf1wxVy1yuqcFmsmF4kQ3f8tX5b5tHUPYWbE7r1ByRqWRTDlKw+0L9z+wEixnOPDqC31Qond9lngAET77Xi3gmNhhGGvaKXOjrx1jgt+gILMGeoyga/PH7D10ECv79bClnOKz6ks8f5usova654nBigtnfyyQNBTBjzcvoiZogw6Qe+0/U9IUb0UM73VlR7hiVCLVXKGthgQ7nM+tmnA5wKSdLH2xzxn/g3GbvM4rk3UovGczVSnr/4evAZvIK32PDA+WNDoW03zT4XaEceGBdclSSmUoJ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(34787635062028)(42932892334569); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(13015025)(13018025)(13024025)(13017025)(13023025)(5005006)(8121501046)(3002001)(10201501046); SRVR:BN1PR0201MB0820; BCL:0; PCL:0; RULEID:; SRVR:BN1PR0201MB0820; X-Microsoft-Exchange-Diagnostics: 1; BN1PR0201MB0820; 4:DjWlo6q1Qu3IMD94lioGNy+tyuqrKJQ0jX+eerPkQ+9Tk76BQUX1JUp1oSYqOlPNOlUTKcGSoE9SfwAN4ZLRepc0eE/Va9g1CnglsNS/BLQ89iJZGF8tTQNQI799qNUllek657kdD4+2cojsqDpnU53q+VeQcmuknjOcKfY8CUgRAVigrWo/xR26zUF/opi/xa0fQLbCclusk6s5ErWXRHSMLlDzBtN1ob5zmLzcgHRh3ukvaibFg4d5z9vMc33KbD3SYM6I06FYx1LUB+2QCQ+BsxziKB/DhCZHYwXE9BWMGFo71KKNzLjbmUcOnWEdbMaf/DtYSsOGceLDE3IzWlVYSM8C6B8P6uUIt3wbahlNkOW38vKuX1DeRsGW3DIvunKZ5PSy7pnWjSE+6++nw6uRayIchMNzddfyiriHmR7ShwJHdBuOrJ9feQhkaI2qVTWha6JqrtUqtlEtd5Kqr0rU5aazmSarKi/kdANBe14e69LLuty2r9X5vZEAX7S+oRuNdOaKbTr5wQU9s32bcJ1CkHMQu14PU45Ze3qYusI= X-Forefront-PRVS: 084285FC5C X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTjFQUjAyMDFNQjA4MjA7MjM6aUwvakRLcVpIVTRoY0dOWnVlMCtjZ0JD?= =?utf-8?B?K2JEK1FQdFlidWh3TmlhM3dnZmFFRVlQVlRsbHRhREtQTUxpYnBRVmJVYnh5?= =?utf-8?B?Vmhldk1uV1RCdDNPb05TWW1TVXdPV1k5eEp5eTZvNTlMU0UvRnNGOUttd3pJ?= =?utf-8?B?UUpBcENHMXJHVXNvRXdtQiszYWxPem1hT05HZmpacE02VHF6cjNqMndYMWtv?= =?utf-8?B?SlBpUzdNNUM5Ynh0c2JKVEovSkNTZko3c3dwZEhwaFA3c1hnV2pGLzRpdVpv?= =?utf-8?B?ODFUclFtc3ZqK3lMSGsvM0dDdHJaY0Z3VmpQZ2p0ZzQwM0FhdU9SN25sOHQ2?= =?utf-8?B?eXlmb2pCaU1qU2QrSFVZajBUQjkzdnJJWW9oNXdxWTlFaDNONnMwaHlyUy9L?= =?utf-8?B?SmVtL2F0aE5zWmhrR3JHR1hXUjRFNFBBY0lPWUZuSmJ3a3hDYi9vYlkvaVVZ?= =?utf-8?B?MVVYckpGOW82QnBzSmthZlVjRTFEdDFxZDhHZDZibk9GcHBoTkJySkwzeXQz?= =?utf-8?B?M2U0MGE4dm1ZNUt2WmUrQzAzMUlFaHhkOHhKRjByaExOYWd4M0lxTzkvUG1T?= =?utf-8?B?STRVaVZ3dW5JTWV6QXNWc1Q2N0JWNUhuNjRDblJBdTNMNFd1Y3RMdkF0azZj?= =?utf-8?B?SFZTYXFRbFp6KzhKZHRIY1owT3k4ZW11VGtSZmNsaFZwNDQ1RStrb2xEMEhr?= =?utf-8?B?WjZ5NjluSGdqeFlua3lpb1BSUHBnR1VvMkFCMlNoNkh5Nk5TUWh3YVcxTEw1?= =?utf-8?B?clNIZ0JEM1NhTm9GT0pwd3BVOTltY0ovK2lHWm9XcWxPeTcwOFRjSmFaZjVq?= =?utf-8?B?KzR3aVZHMVQxc0RHampzbm8yTHFIakpzL21URG9OT3QvdllXTUd1aTR5eFlq?= =?utf-8?B?QU5SWFlxK3ZUcUtqM3JjemtDdGRSenNsbG1tTXhLWk9kMDl0anQ5WFZUNWtY?= =?utf-8?B?dnJlOEthRDNUcWZvdXFwQ1NmdGFLWjZQb2I1eGtsTml0T2lwQUVuVFVHS3Iy?= =?utf-8?B?ZTJNbzFNUndqU01oeUZGby90cE5aUVRqRWhHRzhwdUkyZWRZTGd3blFXdk9t?= =?utf-8?B?M1IrTnVrekx6a3ZjR1V3dlY1dUs5UXVWTlV5N2J6cUZjYStWZVVXeE82UFFs?= =?utf-8?B?dWx0YXp5RHBFa3g0VjJQTVgrSTVVa0xGUVBnOUh0ZERra2s0WEFDWVBTLzJo?= =?utf-8?B?emJKSjBMOHM0cFlZTm9hd2ZCbEpwV3dneU1ndGVuR3A4M3ZqU0lXMmtRKzhn?= =?utf-8?B?NG1oU0w2ZEtyY1JEUEpFY1p4SUN4NGNIVHVIRHM1RFh0ZmZhVWpVNE5sRDJ0?= =?utf-8?B?eTVrbmlmelRQcWtJNmhvNDVVV25VS1R2aEpxT3N1ZktEcVZsOHIvSE9zRElF?= =?utf-8?B?VVhqUit1cmlEQ0NwUGhUdjVGV0RIMUFZTDErNDlCbGVhUGhWRFNpamI5eDlr?= =?utf-8?B?eGtPVjJwKzRNR2ZDWllzZTNEUmp0REJFL0tBQm5talRONnFzdU5BR3pYSmcv?= =?utf-8?B?UlQvRmllRVVyUXkwczFqeGh5L3ZZTWVYWG0rZkRxWVZIb2d2K082K0wwTTFJ?= =?utf-8?B?UTR5TDRuVE5jRFRzZHEyeXV0YUo3SXRRYlFKRFAvd0laK2tEdnJibGhCSis3?= =?utf-8?Q?4ge8HkSf4JK2d2QaBrlk0X?= X-Microsoft-Exchange-Diagnostics: 1; BN1PR0201MB0820; 5:zjCF2Rcosq8MF33mIknWX3SQnsUZ78jsMD6C5ZiABhxvYgXggyTvS3miRFF8pkzFWBkr5DgUXgN6LZEVRRk+lSbFqDq2TyfGYNIkr2lFnUBIi3/hBVDBSl3h4UGkOC1/jK2Vdgf0hgY+QECitqxciA==; 24:W/2ch4T6Y/QFi7YVZf+bZnF6jGTcv5G0pzWr+r8nCOAhh8+D8pIluVI9t5Bxotbxa+VhKD5nJDU2NuN0/HoyID63j/Dw0QfykkRlMjtHDC8=; 20:CvEroxUgTA2+X1oZ++oXbt73pESsQanIsysExbbNiRNw3oyG6flQZ24rWtjuOTV4jtNWZejx+OSbm3snmZTKYIIideiVaFJ/260MumZmobTYCQ/allUFJ1oLtdgC1VcFzIVu2lrbgUEAWOwjbptJWT918nc7NeL+L/d+y/UwrLakrCPvhRbAG7lAhgCPR5oKsYHmIkdasd0DRLNnY2fQLU8b3yMYbYSYJ2uUk3jp7nPjdpPpi1gd5hQ3Vo7heHIB SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: sandisk.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Feb 2016 22:57:35.9640 (UTC) X-MS-Exchange-CrossTenant-Id: fcd9ea9c-ae8c-460c-ab3c-3db42d7ac64d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=fcd9ea9c-ae8c-460c-ab3c-3db42d7ac64d; Ip=[63.163.107.174]; Helo=[milsmgep12.sandisk.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1PR0201MB0820 Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org X-Spam-Status: No, score=-7.2 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP In a later patch a function that can block will be called while iterating over the rch_list. Hence protect that list with a mutex instead of a spinlock. And since it is not allowed to sleep while the task state != TASK_RUNNING, convert the list test in srpt_ch_list_empty() into a lockless test. Signed-off-by: Bart Van Assche Cc: Christoph Hellwig Cc: Sagi Grimberg Cc: Alex Estrin Reviewed-by: Christoph Hellwig --- drivers/infiniband/ulp/srpt/ib_srpt.c | 42 +++++++++++++---------------------- drivers/infiniband/ulp/srpt/ib_srpt.h | 4 ++-- 2 files changed, 17 insertions(+), 29 deletions(-) diff --git a/drivers/infiniband/ulp/srpt/ib_srpt.c b/drivers/infiniband/ulp/srpt/ib_srpt.c index 3f8925e..4e0e64b 100644 --- a/drivers/infiniband/ulp/srpt/ib_srpt.c +++ b/drivers/infiniband/ulp/srpt/ib_srpt.c @@ -1862,12 +1862,11 @@ static void __srpt_close_ch(struct srpt_rdma_ch *ch) */ static void srpt_close_ch(struct srpt_rdma_ch *ch) { - struct srpt_device *sdev; + struct srpt_device *sdev = ch->sport->sdev; - sdev = ch->sport->sdev; - spin_lock_irq(&sdev->spinlock); + mutex_lock(&sdev->mutex); __srpt_close_ch(ch); - spin_unlock_irq(&sdev->spinlock); + mutex_unlock(&sdev->mutex); } /** @@ -1954,11 +1953,11 @@ static void srpt_release_channel_work(struct work_struct *w) ch->sport->sdev, ch->rq_size, ch->rsp_size, DMA_TO_DEVICE); - spin_lock_irq(&sdev->spinlock); + mutex_lock(&sdev->mutex); list_del_init(&ch->list); if (ch->release_done) complete(ch->release_done); - spin_unlock_irq(&sdev->spinlock); + mutex_unlock(&sdev->mutex); wake_up(&sdev->ch_releaseQ); @@ -2039,7 +2038,7 @@ static int srpt_cm_req_recv(struct ib_cm_id *cm_id, if ((req->req_flags & SRP_MTCH_ACTION) == SRP_MULTICHAN_SINGLE) { rsp->rsp_flags = SRP_LOGIN_RSP_MULTICHAN_NO_CHAN; - spin_lock_irq(&sdev->spinlock); + mutex_lock(&sdev->mutex); list_for_each_entry_safe(ch, tmp_ch, &sdev->rch_list, list) { if (!memcmp(ch->i_port_id, req->initiator_port_id, 16) @@ -2063,7 +2062,7 @@ static int srpt_cm_req_recv(struct ib_cm_id *cm_id, } } - spin_unlock_irq(&sdev->spinlock); + mutex_unlock(&sdev->mutex); } else rsp->rsp_flags = SRP_LOGIN_RSP_MULTICHAN_MAINTAINED; @@ -2208,9 +2207,9 @@ try_again: goto release_channel; } - spin_lock_irq(&sdev->spinlock); + mutex_lock(&sdev->mutex); list_add_tail(&ch->list, &sdev->rch_list); - spin_unlock_irq(&sdev->spinlock); + mutex_unlock(&sdev->mutex); goto out; @@ -2652,17 +2651,6 @@ static void srpt_refresh_port_work(struct work_struct *work) srpt_refresh_port(sport); } -static int srpt_ch_list_empty(struct srpt_device *sdev) -{ - int res; - - spin_lock_irq(&sdev->spinlock); - res = list_empty(&sdev->rch_list); - spin_unlock_irq(&sdev->spinlock); - - return res; -} - /** * srpt_release_sdev() - Free the channel resources associated with a target. */ @@ -2675,13 +2663,13 @@ static int srpt_release_sdev(struct srpt_device *sdev) BUG_ON(!sdev); - spin_lock_irq(&sdev->spinlock); + mutex_lock(&sdev->mutex); list_for_each_entry_safe(ch, tmp_ch, &sdev->rch_list, list) __srpt_close_ch(ch); - spin_unlock_irq(&sdev->spinlock); + mutex_unlock(&sdev->mutex); res = wait_event_interruptible(sdev->ch_releaseQ, - srpt_ch_list_empty(sdev)); + list_empty_careful(&sdev->rch_list)); if (res) pr_err("%s: interrupted.\n", __func__); @@ -2742,7 +2730,7 @@ static void srpt_add_one(struct ib_device *device) sdev->device = device; INIT_LIST_HEAD(&sdev->rch_list); init_waitqueue_head(&sdev->ch_releaseQ); - spin_lock_init(&sdev->spinlock); + mutex_init(&sdev->mutex); sdev->pd = ib_alloc_pd(device); if (IS_ERR(sdev->pd)) @@ -2970,12 +2958,12 @@ static void srpt_close_session(struct se_session *se_sess) pr_debug("ch %s-%d state %d\n", ch->sess_name, ch->qp->qp_num, ch->state); - spin_lock_irq(&sdev->spinlock); + mutex_lock(&sdev->mutex); BUG_ON(ch->release_done); ch->release_done = &release_done; wait = !list_empty(&ch->list); __srpt_close_ch(ch); - spin_unlock_irq(&sdev->spinlock); + mutex_unlock(&sdev->mutex); if (!wait) return; diff --git a/drivers/infiniband/ulp/srpt/ib_srpt.h b/drivers/infiniband/ulp/srpt/ib_srpt.h index 9c326c7..5883295 100644 --- a/drivers/infiniband/ulp/srpt/ib_srpt.h +++ b/drivers/infiniband/ulp/srpt/ib_srpt.h @@ -342,7 +342,7 @@ struct srpt_port { * @ioctx_ring: Per-HCA SRQ. * @rch_list: Per-device channel list -- see also srpt_rdma_ch.list. * @ch_releaseQ: Enables waiting for removal from rch_list. - * @spinlock: Protects rch_list and tpg. + * @mutex: Protects rch_list. * @port: Information about the ports owned by this HCA. * @event_handler: Per-HCA asynchronous IB event handler. * @list: Node in srpt_dev_list. @@ -356,7 +356,7 @@ struct srpt_device { struct srpt_recv_ioctx **ioctx_ring; struct list_head rch_list; wait_queue_head_t ch_releaseQ; - spinlock_t spinlock; + struct mutex mutex; struct srpt_port port[2]; struct ib_event_handler event_handler; struct list_head list;