From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757641AbcHYWQf (ORCPT ); Thu, 25 Aug 2016 18:16:35 -0400 Received: from mail-bl2nam02on0133.outbound.protection.outlook.com ([104.47.38.133]:29184 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756968AbcHYWQU (ORCPT ); Thu, 25 Aug 2016 18:16:20 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=waiman.long@hpe.com; Message-ID: <57BF6A73.1050505@hpe.com> Date: Thu, 25 Aug 2016 18:00:19 -0400 From: Waiman Long User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.12) Gecko/20130109 Thunderbird/10.0.12 MIME-Version: 1.0 To: Peter Zijlstra CC: Linus Torvalds , Jason Low , Ding Tianhong , "Thomas Gleixner" , Will Deacon , Ingo Molnar , Imre Deak , "Linux Kernel Mailing List" , Davidlohr Bueso , "Tim Chen" , Terry Rudd , "Paul E. McKenney" , Jason Low , Chris Wilson , Daniel Vetter Subject: Re: [RFC][PATCH -v2 4/4] locking/mutex: Add lock handoff to avoid starvation References: <20160825183734.113736626@infradead.org> <20160825184324.934871397@infradead.org> In-Reply-To: <20160825184324.934871397@infradead.org> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [72.71.243.247] X-ClientProxiedBy: BY2PR1001CA0001.namprd10.prod.outlook.com (10.164.163.139) To DF4PR84MB0316.NAMPRD84.PROD.OUTLOOK.COM (10.162.193.30) X-MS-Office365-Filtering-Correlation-Id: 2befef9a-aeea-4884-23d3-08d3cd333947 X-Microsoft-Exchange-Diagnostics: 1;DF4PR84MB0316;2:VPt5mIK4yss+3sgbQ5Wm2dG4Z+HGuFeP9wruJKG4NFMrC2BENWl9OMJaO9zo9cst2sLhPXPMnTz92LuhX4zKCP6lWFVclT9UcIWwFSecurPcl7/2Gs0zQF1QjTn7tY8aBwCZxNHvXfNyXkyxdgeZVDs7xfyQzzWsypfmj/qQgiI2TsQb9FKt9rY1GNs2B+i1;3:snOqsQFrm6m4NUstr4cVtMGkHzCq8A/fhJuZUAP1SCuxcOUtVhQsk0WB1txXvNe+s73ACfCfUREWER+RJMpaJkU41fJA+ZWms4EQJvOEOqnGFHhVIKE0eAEFMfqccuuc X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DF4PR84MB0316; X-Microsoft-Exchange-Diagnostics: 1;DF4PR84MB0316;25:I3iNPujq51hLiNuoDaV8uJ5eAyr+xUq9lSCx1O+SO7/e51UcPzZq4CtPCS33ovz5cyHXm8Di5gGuBVrgMwYcrgdunzTK5HIAmjBatBwP61dD/rRN6z9EjE1wwj8RRC+1sRjsSOw4wf268vTw7S2wjv6/f1hMo6S731IOv20W8IYIcaORCocxzwtGXrfJREaL4kGiVBZYhF8zJVIICMNDjdKtQ3oqI8fyCKCbFW7z0AyHbM/NfXdBppRzs9UAatZx5IGznAhOJFDK4YTyXYCWhU05tT9XhE+EpQZ4LIFUvOdgz78pKTWJ5Oy6jJq7bF1jdWb9jwKYkk50QmT+pplo5wmjPXoIZPWmDCv6jCUXyOU0dPaMjPTFsQeFS7zF3qbCNfwZSTrBq2SxIXQCTw0oXuhAaZxCHxtxEuHqj1+6dIvrKqjjHZCPor8QKUg+y7ij+ko7UodaAZ9Ss8Gi7tWCuBRVXFaNw9lyXZ0ehcK5ovEmcvdT5enhTiurMzdOq4HRy7dI0/6ZKUPYcwOikCatWNqloyOQpY7JAa1yRsVrhku6ppe/HMI6498i0ruvcENwJVJu3e3saeowjvP4nV93dKv3Tnd+g16LRXsBcspXjFqnGHxGOR3VF5nJ4p/G/UaFGuX5YB07bDk3dEEUkFZV3ZBgV+RLcMNU0gEd1PqhAMl/xj12gnHO2aC1tyly3iqAQOU4V1c19bAswGiUrOddO+i7kWFxM7X0Zj2qgCpBz6Q= X-Microsoft-Exchange-Diagnostics: 1;DF4PR84MB0316;31:fNkbstAtQSTyGz1sMLUhTvMD3xwxl48syJZB3h7jU5TPCTJIQR0cg9WcQysq2TrxJuED1CphdHzrcy8DKONFgyMkEK42mbg30rZaO64YnR7kesRrfLxrF1NpeW1TGgYsXKnBr1tiGKqGGBiB87dbDC2ZwTCuVX8m7XNm11fHSXTE6r9cBUbsJOMUsAw9ujlgd3YcA6qAGrG+ae00EUO7nMq/hVkQAJKcdiyz3GRhV6M=;20://8Eaq95YnSJHZYweFmwkC5mo30XsDh+dcCNx57L+wrSuhxJKEr3f4Q1CKK52z6iy+ZsO49d55KvHqQnDPGobASyOp7tdlEpRNybF2bEAWr0CbT2r+IAVpYJq9CpbdWMx0Ih+Axi2MaRQRgHcBOtdJEloXJ3+FHbKgnYu9zw/2+n1wTKUkjgDZZdRhyuylvcN8G76x4FL4sU4fDMQOeHtkneXEpM99K/PLyJnp2DHo8IA3YlLqP83/bA+lgfuuy5Li6MCm1X5tCUV6LOSxQOStY+VH1+NuTXmLbTHaKJiapXYEvPlcep5R+bVKSvPPI9lwRCddXQS9wen8nhk6bgAOFNvJ8ltCs1DONkqkYslfen+tNYgrGiGbUaNXQKSofg96ICvQ5reXVmG9uN7UFud+Pd5H4QCGFrKf/Vr9qJtTozVEJpG8fNSxxbFgZGq+xyNDQpMm32aI1wFTxx6TNDz8i5OxP/jACGJJ+HJm97fMy57lfGIpPWaGMdVReAANHZ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6055026);SRVR:DF4PR84MB0316;BCL:0;PCL:0;RULEID:;SRVR:DF4PR84MB0316; X-Microsoft-Exchange-Diagnostics: 1;DF4PR84MB0316;4:+DbSoFOpbCLUj/hfxFKgW5xcS+tqixWagwan2uDYj0wRkbXB1xLJpKNL186I+r5rZuRRo1euJM4QhIgLR+hSkgBMRTIkzbJ1lQ9SvKeRIUWAoSP0dTXIkG2qlWfuQLvXpXa7VvLbkSlJoKO5Q1BTHf6YgT1Wyfww8makV6ssgxa7Y/c9aBP+ByeMB5ScMBHb7v/pApWGa7AG1uUHac7ZqtCkLGPQf9i4zLtdYSpdpyt5lXuuDNWmsF25/vGibp+PRDGU9e42YytvyzCrxc64K3McKGva6vcbS/xIc/UkETJhIVu+dhHwKJGZV/ZR1lWW/JIgZ/FJTsbxLWVjxoMz228LaCQGwSTfy/e9aHRGAVH8tI10pEcGyZkVWanUNj3EMx3MB4KejitSPEUHO7Dc2U28f6RIgYARHEQfgTQbvlc= X-Forefront-PRVS: 0045236D47 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(7916002)(24454002)(377454003)(199003)(189002)(8676002)(2906002)(68736007)(81156014)(81166006)(36756003)(80316001)(106356001)(4326007)(42186005)(7846002)(86362001)(305945005)(7736002)(8666005)(105586002)(7416002)(33656002)(50466002)(87266999)(77096005)(5660300001)(92566002)(586003)(3846002)(64126003)(6116002)(54356999)(50986999)(65816999)(23676002)(76176999)(2950100001)(83506001)(230700001)(59896002)(101416001)(65806001)(66066001)(189998001)(65956001)(47776003)(110136002)(4001350100001)(97736004)(117156001)(7059030);DIR:OUT;SFP:1102;SCL:1;SRVR:DF4PR84MB0316;H:[192.168.142.192];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtERjRQUjg0TUIwMzE2OzIzOjgwL0w3Um42T1g0Zkw5VkgrdkIwNDlxOTBj?= =?utf-8?B?SXJ2bldtaTU0M0JTVldOYnZsanp5bzlwakoxK1J4Tk9ySlFJSkRyS2R4TUc0?= =?utf-8?B?T1A3SEhuY1lnb3h1YnZUQkZ4ZmV6bWYrUW0yb014UmhQZFRiMEkzZVdXazVD?= =?utf-8?B?QTM5VUpvYlZtTktrSzVLR3FHZ1BpaHRWRHpNMnRPQlpxVUlLaDhYK2dGQnhP?= =?utf-8?B?Mk9lbXZhZ0k5ZTFzWENlR2FTRGt4cWRURnUwaTBTQmhUU05UM2xiWVgrSkpU?= =?utf-8?B?RkIzcTViN05sSmJYRUkveVhSbFltZVQyVnVPMGRoMTJJZThxYllMbldPbVdE?= =?utf-8?B?bE1IaG9BQWpUZWdFOXRWRjdXWGhmcmlKWFpUV21Xc0NBa0hVckZOQ1o2bktE?= =?utf-8?B?M0UyQzlQd2ZwRTlCQkFKQnF5dzVHNjZKZkFPQ2N6KzI3cDhndXlPMVlnSjJH?= =?utf-8?B?WEd6cFp0aDFMSEJybGxMRmVTald1Zjk4WWdrUUVvVlM3OGFtbUNaQ1hQbkJL?= =?utf-8?B?UGdPNm9uY055RkNPRFZHYmk0UTZ5Y3VGeVRCdnRuS0p1LzdzeGs5RmxPMmFo?= =?utf-8?B?UTVwV05oM0kzVkpIWm40bThUdGp3WFZpc0Fpckd5S2JEazVwM2N1K09oK01C?= =?utf-8?B?UVJKU1JLS1orNjFwaXhFZWUvS1hBL0piU3RzazhDVy9UZnhjd0tsbWRKaHhV?= =?utf-8?B?VjkzQytuNUlaQUV0SExnUmQ3Y2x5RUJtZ011YkFHd25sTU5waVBqWEwxemV0?= =?utf-8?B?YUxCd3VXWGdxZGFjbWtMUlZKdVZnSSs3VTRRUkhucmhtTUxpazk0eDUzUmo2?= =?utf-8?B?a2VwTVg3NGloMkY1TmdERzRWUER3N3JBRis2S2d1WEtjRjJubkNScWZxd2pk?= =?utf-8?B?N3V1NEttUUhIVWlVYXpJR04xcEhMZC9QTUx5STF0UEovQ0c1djJ3Zm1rZ3Nq?= =?utf-8?B?RkwzVWROb1FUaHFkMjNCYmZaR05kM25QbFlKRzNvWnZnaThKRVFBZ25YeTA2?= =?utf-8?B?WnhpOCtjY1o1aC95aDhpNHNVMktNZVltTEpYS1JiSHlhTnNFVVlsWWRtM2Nm?= =?utf-8?B?VUJpT056SGhySWVMOGJEY2s3aWhuQlRKUlpBcW90WWVyOUpKeHhodzlxaUh2?= =?utf-8?B?bGFXeVRZL2xaeCtsVG1TajFBcCtoeVZxa2VMQ3ViWjJQdHQrN2JtcUp2bWpY?= =?utf-8?B?VVBubVlzVDhzZngyRUxBcDBWN2FoeHkrNnhvbng4blF4SkxwT2NHTC9lZWhq?= =?utf-8?B?N3VodlJTV1VidWpncUhadXpjY3RhS3Eyckk3NG5TUE5xeDRIVEFJaTBENzB3?= =?utf-8?B?Ty9va2YzdnhKMzYzL2hVa0Z2a3RkVmJvZWxRdlNGbXdNZGg2ME8vZWc1RGcx?= =?utf-8?B?ZEJHMkU3cmdOcWc0OGhmL09TNURGelh5NWsrazJqWDJGVDdDeXpKdVhsVHRi?= =?utf-8?B?cmVRR0p6a1R1cS9oK1NwNVhLcysvWFEvQVZiTGxxUGRXcnV2dmtqOGpCOFZ6?= =?utf-8?B?U284WTY3Ry9ZcXRMTkVRVDUyQ0tibEtYeStxbE1OM29PalpWamtLRUdOZzlJ?= =?utf-8?B?eTUzakZGcUEzam5rNzNjS20rVzY1OHdKOGJFSzFUcS80MmV0WmNHQjhpcndM?= =?utf-8?B?Vkd4ZGwrdnhXMGZUWlpsSFQvWEZiUXd4UE5YUjEwWFlBL1lzTXlxczJ0Q05H?= =?utf-8?B?NllyRkJWZUNDTytHTUUxb3I0Y0NpcWpNZ3BxSnZMTXJJcEEwc3JFNFNrVS84?= =?utf-8?B?eTUxcExaWCt5VGxXZDlzOG5CakZSeDhLaThvZ0wzcXVTemJWVUcyVHdVanNn?= =?utf-8?Q?EHJ8Of2sdkesb?= X-Microsoft-Exchange-Diagnostics: 1;DF4PR84MB0316;6:TUUM4bTsJI4H2AHE+Wna0v/6VH/itD3yJp3Sa4RrCNEbrSj4e8oiQXuAQ+bhz8FKUTb7CFBt2BLyNLkj6CfkR/bixqdW7vTvOhyJzpJ4bpvtYd4tLI9ZOEtuDPvPd4oX0kNz6x46JHBl924jfHzIzDf/JY1xJEAhBWU/KzhEWWbioIUJeLEesjyh/r9Paa8n5k4/uV0AmOx2Pl2RUuyc4ayACKgqipoR4p3rk38h8WcVufgin2KvaLtcW3n6+mUQIif9wcrx6kV15lRFzX6/msSaWiNrtd2a05/xt23DxzL/PwavIYqQxRKdKwo/Z+/Xe4Nw3whuerNMvmpqIka8/w==;5:DM+9C0FIRj400O5UOCs1kC+jMU6cyUlswvtl52QDFtyVRRZPshgOxeNvH0XSVlFay1/WVS0D5RIwKwa16+9KD59DqRO0pnyVBdxCM1aln51iXEMyCmoPt+mrNS5DtqJCFUbOKKmbpYHJaYylzSGIEA==;24:k1OFWVJ+/TIsZqN+ylXX6pludr8UYA35vey6R+SyA6KzQ4CjXbvueb9u4OV6/7gbtokdzKYVMKABahVL2mmcZb8TrN9Vnvt75TAEUfkw6qc=;7:o+LEkUGZ6TKGUAY5we5Lh/ihmSoHBEPrsmfKjq0Gcqr9DK7UU4pyboUi5n5AA50dGUTOqYlL2PZmpwyKMcI6Lwn7czjpLhlQfl74wiQYkgZCx5Af2BX+rxz/1Gl82fzixX6azV8xL8L5pn+pZ55EClww0efLP1HH7QyF1jYgd2EwowZMGkXBoJj3pTrJYbeqtL1ciXU/KPbIBvsD7ssIdRQ4plyup/MW08j23dHcLXBxjxu5McQ/xO4Z7kzFlfYd SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Aug 2016 22:00:25.2679 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DF4PR84MB0316 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 08/25/2016 02:37 PM, Peter Zijlstra wrote: > @@ -468,9 +496,12 @@ void __sched mutex_unlock(struct mutex * > DEBUG_LOCKS_WARN_ON(__mutex_owner(lock) != current); > #endif > > - owner = atomic_long_fetch_and(MUTEX_FLAGS,&lock->owner); > + owner = atomic_long_read(&lock->owner); > + if (!(owner& MUTEX_FLAG_HANDOFF)) > + owner = atomic_long_fetch_and(MUTEX_FLAGS,&lock->owner); > + > if (__owner_flags(owner)) > - __mutex_unlock_slowpath(lock); > + __mutex_unlock_slowpath(lock, owner); > } > EXPORT_SYMBOL(mutex_unlock); I don't think the race condition is fixed when we don't make sure that lock handoff only happens from current=>new. The problem is due to the fact that the MUTEX_FLAG_HANDOFF check in the unlock fastpath isn't serialized by the wait_lock. As a result, it is possible that the owner is NULL while the HANDOFF bit is set. Or an optimistic spinner may have stolen the lock in the interim. Cheers, Longman