From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752310AbdFSSCx (ORCPT ); Mon, 19 Jun 2017 14:02:53 -0400 Received: from mail-db5eur01on0099.outbound.protection.outlook.com ([104.47.2.99]:9536 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750844AbdFSSCp (ORCPT ); Mon, 19 Jun 2017 14:02:45 -0400 Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=virtuozzo.com; Subject: [PATCH 2/7] rwsem-spinlock: Add killable versions of rwsem_down_read_failed() From: Kirill Tkhai To: linux-ia64@vger.kernel.org, avagin@virtuozzo.com, peterz@infradead.org, heiko.carstens@de.ibm.com, hpa@zytor.com, gorcunov@virtuozzo.com, linux-arch@vger.kernel.org, linux-s390@vger.kernel.org, x86@kernel.org, mingo@redhat.com, mattst88@gmail.com, fenghua.yu@intel.com, arnd@arndb.de, ktkhai@virtuozzo.com, ink@jurassic.park.msu.ru, tglx@linutronix.de, rth@twiddle.net, tony.luck@intel.com, linux-kernel@vger.kernel.org, linux-alpha@vger.kernel.org, schwidefsky@de.ibm.com, davem@davemloft.net Date: Mon, 19 Jun 2017 21:02:26 +0300 Message-ID: <149789534632.9059.2901382369609922565.stgit@localhost.localdomain> In-Reply-To: <149789463636.9059.16943955939303454611.stgit@localhost.localdomain> References: <149789463636.9059.16943955939303454611.stgit@localhost.localdomain> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR0801CA0053.eurprd08.prod.outlook.com (2603:10a6:4:2b::21) To VI1PR0801MB1344.eurprd08.prod.outlook.com (2603:10a6:800:3b::8) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3a1ffbf0-b07d-486a-9f47-08d4b73d5be3 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:VI1PR0801MB1344; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1344;3:xj+xdDxJmyXUb0B0danGP9pFBUMWdg6ZXUW+XQN5dNgmXLuowM+CJD7phm3U7F84NZKdqZZGKPr1FOjQITaiVbd+EUSWzAkKuZhZctbFxjrLsJ1/MgKi5olfOiL5THVz0WZ93MWYknfFenQ5gQNVUjB6rK5EB8e+Z3HmqO8DvJ2XGpOSW73y5pe4/Lk/XpoXbbhKRRscgFS+OWCT+mxDdr2NHfCzCX2Z7ZL1WteulvLDaGYIPll1R1733SJ7xCqzV05E3kfhtbg3YqpH9lUyrccz1TzgBMcY1Hk4AhZH80eyXX7KR2MmbCpU4b1LSBbNKNtMoplEaIHF7X6oG8yBCQ==;25:GoMqiKIs8jaxPpTqzyvENYpcW6FaRSdV7CoSLRkV+eFdQbwUp3J3t61WDKWQii6mCaV0msiKBJIo1KfKQezDnQhn18ocTVHYdCnG9ic2GzGH5UDRD42ixumLn00s/CJIaa+3fLcv7uvW/Ao7zLm+C/f8XauAslZztlb7OFuMK7gxYg1p7G/9j1qrYpJjgE3fkvhw99J7kNNye9c11fbRLvXATgusI15p0YEbHYtlgTOqaM3F3DLEe8YACB7+PPnfnOnk+HmVUlWNy5uib5Ncleaf+yj3Qi8sIBysgRn0LGq7uSE23GK9NItAAe1xzN+iYxkINK2ctsBaZIVMN5/EQqNPrBVhW+itN0dpSMl8e/dsQdUqJgNmdI2kU7v6GAhbYBRdR5gK/OsI1idz4A3iDe9VHIVj6sNvh5iJQzeXCX39cglXWWFnAwjncetYWcskq9FEslhLpD2rk+DzdCovn4xOMVU1QP8Gtx4NRw+3izM= X-MS-TrafficTypeDiagnostic: VI1PR0801MB1344: X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1344;31:Z4+5PC8T1R+Z2/PI/wadsHE/NzFFbhhjitERZ/meLOApiV8De9wwyOe2uA7BRayFyNoS54i/H87Pww1zEJLxYy6Wpve1sv5NidYNHmkeIHPIusf/4isUDEUH6j8XTvBrkNkLyQ+BFs8FCMXRgi1zXO2huvdQtSGauB1iWxKhpY4HDeLm+Ffu6OYd1qEvdFRRxNVeD84DiWNJCze5UUPUf+5Vrtsaq9a1rAgkFi/Jsmd37kOaX9a+cTjAMa9Fac1TXx3kbS8uzhnywO4bCBSFWg==;20:or2iDZ1lDgjTJs4t7sRUJsFgqMR7gXJgt1wIEIw/W6xMuSN24D55goVUHvw6Fz2CwZqvpcGhG0oC9Q+5iar0dyV6wV0zlIHfqeux71rU6EuYJ7hMFqZfjdzMD288mzc9zX3+BOGEu246NBWKuhMPPhlsgXJw3Vk2rVdZtx9RY7KC5PxjFSI5XrXrMbskhhIoMNl1f0Xm1Lmyg+kwGPOffQidHB3xfmh534GqkiTLrNlTo7Vtiv3I5MEyJ5BfVWzMntvx+xtyMw5oulz+mvuzG/HrcCEzUMlU+svuCy8lJ/zuTg0C7YZzSJ7BBmyG22eKvD2lNFphCXBM2RKyGNuBbP8A61Wo7AOkSLwspFyT2DPLOKoEpdX8NsbL1Vx300dxF4FbErxSoRIRecLlyMvwkoJUzgGHXbzlJThrHWtsGt0= 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)(601004)(2401047)(8121501046)(5005006)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(3002001)(6041248)(20161123562025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123560025)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:VI1PR0801MB1344;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:VI1PR0801MB1344; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtWSTFQUjA4MDFNQjEzNDQ7NDpIcCtSd1c4YU93WjFRcU51WTkwTDFRWEJr?= =?utf-8?B?elNzZmQvLzMrSytHMDI0VjlJRHBJYW1MZnN3Q0Q1cm1rNjJZNEVTWEZYeWlR?= =?utf-8?B?S25EZGs4NjV4OUd6WkpVdk9DVStOR2o3QW1QZjdkbzVuaks0MVZwR1JPaUR4?= =?utf-8?B?NkozZVJaK3ViK1d6SUhqcWN1Ykh4MWtMbHQvYXRmY3RYNFJWamlEaUpmNWN2?= =?utf-8?B?NlFBMTVkU0hXVldtN0crdzVmeGkySndxRklvR3RzSjRWelRjTk44aTRLT0Yw?= =?utf-8?B?QWFlQi9lcDc2WTMrVWRhZ1ZkbmhsYjZETkRMOUh1U2JxNEZGZnVzdG1NNUNP?= =?utf-8?B?S0wzenNuMnlXdVRSMmRab3N6NkpXMy9RaG1ZaFhsUzluQld6dlhPb1I1ZS9j?= =?utf-8?B?Z01vM2lTOWlwaWxzdVpSSjNpeGJ5KzJ4c3k4eUE5ZDU3dTJLcmFjSks1RXpz?= =?utf-8?B?eU9QVkNjT1U5bEluUFptb0lvbldwZmdhakJRaUJJL0hJRlhLWnFtT1NIVmth?= =?utf-8?B?RXJ5MjlMQ0VmQjV6Y0E3SVpubllKcVFLSFRxT2xRZlQ4QzFHemhwaFl5dEFy?= =?utf-8?B?YlhsdGZWa0ZpeXdFUmtObDY1b0c4N3V6WVpFbVZvdGphME5ocTZibFFuNjAy?= =?utf-8?B?N0dzTC9sOEtpbFdrQkZuTWI0WkdCOUhvNGJHR3ZBYUozbDFOYmRrWnU4YVd0?= =?utf-8?B?akhjL3Jhdjh6M2dwQnlhN2hqaWpMZmxXZ1JQejdKTWRNTU5HM3psZDhUcmFI?= =?utf-8?B?ZzFmYmtsdFhaYi9pbDBQSXAzSUk2cGlZSjZNNGtiQkJWSDU0ejg1OFZsVjVl?= =?utf-8?B?VHVvYlhjbW1Ib3VjVkJOZ2FNeW5aOUhJdEgwQmhQakVzZVlCZTVhUUl1dlZ0?= =?utf-8?B?SWZnYW4yUUVCMTVEcksyN3VRR3VwaSt1MU1xZlVBT3BzQk93UkJGWU41WnRV?= =?utf-8?B?NjJEMGx2bXpsZDVBZGZmVklkMnZ3ZFMwQU0yVkUyTmJCVWtKM3ZLVWFxV2pa?= =?utf-8?B?Z0hoY0ttcTgvNzNlOUNWbTV5VUFUTURod3MranNkL0VjU1ZnSW9VSVJncmxz?= =?utf-8?B?ODB4b0QwbUZXQk5pd3RvS2M2SUo2S3cvUnZFa2M3UnFlbnZKR1R0bG9vd3Zi?= =?utf-8?B?UnFiQ1Uya3RoVHhpeS8rd0pJYStqUzBiNFplSDJCUnRkYUdHbnNkRjFpV3lt?= =?utf-8?B?eWtsS0puVWpYZzVHMC9tRlc2UjVHZFZxYThKOTlaMnhNRUFKSUZKRlE3VkZU?= =?utf-8?B?WnFaSnhLVDJ2aHRURmo0SW16RXNDTTUzTzVjbm5sbEFrWHhINmIxUTY1amwr?= =?utf-8?B?Rys2MzV6NHFWdkt0ZzIrb1lleXlrMktmYkZhQU0xUmlLTHpOOVZsNUJjNVNG?= =?utf-8?B?cjZxdU9NRGdUYzVxalpweGtDaFphT0NZWTZIcEF1amF6TjZhM2FKN3FGZDAv?= =?utf-8?B?M09kZFd5SHZ2UXNUZmlFVDJOMkVmRFlBYnJGTTkvUWFJeThySWo5S25qcktG?= =?utf-8?Q?3fIAVyuRdZcj+4pgcy67mRN8LVrX3KMnoW0pk+4wEANZLTZ?= X-Forefront-PRVS: 0343AC1D30 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6069001)(39400400002)(39450400003)(39830400002)(39410400002)(305945005)(76176999)(47776003)(50466002)(103116003)(66066001)(53936002)(25786009)(50986999)(3846002)(55016002)(6116002)(54356999)(86362001)(9686003)(42186005)(6506006)(7736002)(2906002)(83506001)(4001350100001)(478600001)(7416002)(8676002)(33646002)(61506002)(38730400002)(6666003)(189998001)(81166006)(2950100002)(23676002)(5660300001)(230700001)(110136004)(921003)(1121003);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR0801MB1344;H:localhost.localdomain;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtWSTFQUjA4MDFNQjEzNDQ7MjM6QXZPMnduLytFcVZZbUFydDlDaUNYVWZk?= =?utf-8?B?N29COHdsemxKaFhHSVYyZ1Z1M3JZOTZVSmFrVzlZczhnNUJMTzhEeld0SE5r?= =?utf-8?B?bzIxbldyL0Fjczd2WlczSVhIK3JMT3k3SHhLVXlPVlVrMjEybTlYRURoUFBL?= =?utf-8?B?eEhJTk1XcTFwSDN6Qm1makQrM2d0bkNnM0ZoWTg2blEzSEF5WDNadkErSHZK?= =?utf-8?B?OWw4UHpzOHhVczJucndPVzRvV1VLY3hobWJtbjJ6SzJPY0paV0tGRGFyNXJX?= =?utf-8?B?bXVuVkkxZi9ZRWgrYnMxMzNRYzcyb3RmUTdZV0kvQUt4emNzOUN4US9kS3dQ?= =?utf-8?B?QnU1eHlaQlhaQ1VqU1F2Q0k0OTlPaHcwNVJqR2JIeUdvRWtuZDgyU005Zit1?= =?utf-8?B?S29lQ2lMKytDb0VkTTRiVEppRjQrem5qVGVhOXpFKzJyOTFlTGRIaVF3cXBr?= =?utf-8?B?YnFadDBRN0Z2a2FDbndsbzIveXpaNEFlOUdFeFl5a2k4dEdMOU54UkQvOHAv?= =?utf-8?B?VGY3eHZjK2lpdnFueU5tSVU3d090Z1c5R0FwWVpjUTltNHREekNHRUYrYmwv?= =?utf-8?B?bkNYWWVSWStWajNVbHZtaUJTa1R0UHMycklTWUNSWlpIRHBKeUEvSzViQnUv?= =?utf-8?B?UE5QRXBXRFJDYnQ2cUNZZTVQbXViQnk1NEpScXVyRDB0QXBUTzdDWHpHNmdK?= =?utf-8?B?UHZBTXVaMFpnRTM3MWVzcU5HREtSRXd2Z0U1ZVlOQmFEd3FpNUQ1NXdtSG4y?= =?utf-8?B?dGVkSVpabjhXRHRQLzhZUDBRZUdoMmp2RzhFOGNiRlNWOFZYOGc0dmxkK0Vo?= =?utf-8?B?Qk1laE9RdFFmQWxVaVNTTHhkdkdCbyt3b2NoVGl5MVZLRFRna0ZSUjZtQzZy?= =?utf-8?B?QUp2NTJFSjI0NE50REVDL1pneDBlUkZ0bWFwWk9JZkFlS1FIcU4wd2c0WVdF?= =?utf-8?B?R2VwNEFROWMrQzhUNk9IOVNWN2VJVTN0ck9zRDhuUVYvazlvODFkaDk5ZklZ?= =?utf-8?B?SDVRRnZleC81NHVCT3FYY056NkdGMEs4MTZDVEdxV0VPYk9Jd2JGQ1NCSGRZ?= =?utf-8?B?RWpHdjcvSE9zYVNMZy9ILzB2WjVLdmJFM3ZMNWZBa0xwdGdtek11cm81ZVpH?= =?utf-8?B?bnpJU2gyYlpqVTRhb1FPcEhocU1DWGZ6NUhSRWJlLzdWTHBLTGhOWmhDck5o?= =?utf-8?B?bkMycThLdEZzMlQ2dFVDMnVhelFDTm1VemFvMWNmc2hGRUhQSUV2cWV2V3FJ?= =?utf-8?B?dVJ3ODY5UDV1N3J4aVhWMVgrYWVBSTZENHl4VDRpRzZwakF5c1Fsb1pKQlFq?= =?utf-8?B?eElzbENUYWl4bWVySUNUekxPU2NWY2ZCK0lTM2c2Tzh5bXVET2JHOXdmQnJ0?= =?utf-8?B?b1JzalJsNFJjRDl6dnZzTDZCYm9LdXZVUkhvVE5zaHcwUGZZdnh2RXBGWmxj?= =?utf-8?B?cXNmSXVLSFg4dEloaVJmWnRtQnV1Q2YyQWlQTTNhRVREMFdXdXFvaUFTMzc2?= =?utf-8?B?T294Q09BPT0=?= X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtWSTFQUjA4MDFNQjEzNDQ7NjpwTFZJWExRN1dOVVN3VUNDZTBPRHNEUkF1?= =?utf-8?B?dFJyejJZQzR5aEtJLzdRMHFMSXBubG9LYklDOHRCeC9TMDdTZktnc2xMdGha?= =?utf-8?B?eU9WWno3Vi8vQWw0ZnJyVFlSSjZiUHVkOWl4LzNvblI0UDFRVmh4SEMwUkcy?= =?utf-8?B?bkN5RjNWWkVkRWRJOWEvVU0waTVBYlo2WFVwdWJRQ0tnb2xEZ09QTHVwUFdh?= =?utf-8?B?Ri9JTEJTM3BpMFJqUlJDbTJDN0RkaEwzeUJJTWloN0RibWtSRmNzblc2K0dJ?= =?utf-8?B?b2hTSXdIVTJGN1FOTDA0cEhwM2pxT3RzVHY2aisxQ0FIMkNVbFlUSTh2a1hH?= =?utf-8?B?MC8yQ1dzYXk4eGp2Zlo3amZjZWZnQzZvVG9UT1RYRlU3L0w3YUFNZVA5OGd3?= =?utf-8?B?VDQydUw5RU0rRUo3bkNVeGxQNSthd2tzenJwNE5GMjIvdlZadGlWU05uT1FU?= =?utf-8?B?Qkw4TUlzREI3aWFVSE1FMmIzbkZJOUNQZTRreHZKUCtpa0lWTlAxbFQ3MDg1?= =?utf-8?B?VDVnbWkxODNIbmJwRFRmM3dRbVNhNEZsZXJ6NW5VYUh3R1g1V0lvbW1KZUZ6?= =?utf-8?B?MHU4ZDRSc1FHWUo3RE1mK2ZsaVVETFkxa29LYUtRZjhzdjVZK2xaa3NraHZH?= =?utf-8?B?czYzeGNNNFEzeW1neE9tSkYyTUNKa0pkSzkxaE9jd1RMTVZmNXIxTmdlN3B5?= =?utf-8?B?WGdHbU52WXJ0Yktna010ZmhDamsvUVNlNUFxNEY5Sm0xVzRlWDk2L3R0VjRu?= =?utf-8?B?WlhIcUErcU1UOGZrSVFzQWRpZk04YzdJTnp3b3BxSEQ4MWFOTzJFMVFYVks2?= =?utf-8?B?eHF0TjRqdjlYL3VocTRwUmNTMUYxdGx0MGxJSGtNY1ZtQXF3L1dCYUo0aFU3?= =?utf-8?B?Mk0xSDNRTUJaSUJ4S3dsUEhSR1p5NkJ3VlFBbEhZZVNIWjhaZkJNdVdkUXNX?= =?utf-8?B?RDg5NjZHeFlUek5ObDhNUmFmd0tWYXJhdGp4eWI3ODZ4eWZlNnFJY3YzV0Ur?= =?utf-8?B?Kys1U2gvTTFQVTcvMXdGVXloaTBOalJnUmZzbVYzbnB4MXE4YUF5Wk9PSVBE?= =?utf-8?B?YXFLS3l2bGhFK1JacDZOa2tkVUxISzBHMmZseitkTUxBbVUvMDc2RnVLYUZG?= =?utf-8?B?Q0xWUG5iM3ZuTW4vVDNBRTRBQ2hBU1V6ZjZCbWRpRG0yMFRFaXlVUjREa1JH?= =?utf-8?B?d2twbkpHZ1NQbWQvMWNzeDErd2x3U0kxaXlrclprNXB4VVF2VzcvUFd2U0E5?= =?utf-8?B?OVRsUWlZZjQzYUhpWEJ3M1dYRHJ6L0VabDFic3oxc2NkMXpYNEdiR2hMUkxP?= =?utf-8?Q?ueLo299j234VQQImxHhg1FD4mTIo484k0=3D?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1344;5:4xr1gKq+2Ls9VJCCPW9fLfsNoXyzerXzUnVecbmJ3rcnpSSPdZHyyc15b+l89nYW5OQwQmASHObO3ZEblo5HIbmRoDqYLz7BjR07d702TW5qn0CK76TBnRbBVKFiJubOBSUFW6HC7Kh3BeFAcJI9VFJtkyB2merQxItt+66z14RLFcie2OC/dKuLr+udBkPDeY4kZEWwAhMk/pDC0g4CNv3sLsgGXm2p7l2JV4xbJKm+9FNIVOltS/T66wENNjkJwkbbIQCN11oF7ucWYk71LdAaHOwey02auxiCt/OVE28uh8UJIAeOlUvDvzXkjtwFu111iQKhozLIX+uSi54UQj+dJdzftlyssj5CjqIJu8DLoRZseu5ih9wPul9Q78j3if2x6ehIhDimMdnKhk3464LMYWGrYYDH0n2KZAOGkxz6VzvP8BFD9bSZUzRj6kNQVdLHf+nDBsudD7GMXRGstXj6XWXdyAfvFx5Qn7fW6RsXHU6SP/ZnNU6V2ruRzdAB;24:jPBqk/Qg8OsO061N7IaPoBkzdaZ9+afL2lOnhJJm/FSjrMbMmL7S82UjvD1IBIZW2DpgkNWyhGSIR48i5bJ7TRNNb4CPo0ijzGxtsCFBUQ4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1344;7:jAbCvLbwEgGKHqQbHCCV7YGnUhoDhFBvFXdkb2QHCnAPUOcbucbI7NEpvBfEyECa+4f3knzQbuDF5ZyuZitQ3cV4aQcV3oGWQyBJUK/Yc4o7V+gE4efmqsdvGh9+SM0EhCQ4UKRlqAWu2X7L5CCG7KMjgX9TAj3V/2hzuyBs+JAs3fnlZjVJbVUK2DS8j4sEeTGAZFOAJ2u6w0LuAvDboaxeCDvIqHsw+O9l5I2r2ar+ojxoCEDh+ehfrwSr0lysSVlgZEgYwCnReHOghrJFskIoUDhac0ObMMQXDW6ikMay3ehRzJ6Caz+c+blE48gnCikYjiHKvd+T/gqNlyTfs6tktLCB3GQ0NKyDRotZVC8nRy91RkVx4YW+7UfZ+E2gir6fiELj+FMGSQwFJkN+Bo5EtlfW4i1JInY/hSS1TpXF/MFahV3LiuJw1uyFRwV9bh98Zyy4fwyONiwAswUp50eZUD9Ibf8BztQWydeTRqCuAV4sg9AcU7I3W5/7RSEAlgBjjAzohu5VZlqGXVsy4YWIrzjUrQPtoxIUMeBQqNCzVTtNEEQK6KwYn+1Xhy05+oJCX+F1abwhKVsQYpdEqOWNHjkBW7bOnBCSsGUzyLxzgL8+JPMB+ApbpmgO7lfSyufIMvf0rNFk+mhk74RswKRTYDqBx8PJl+pRhOhOKJHyxG4OIlTqaZRR8pPdREGvnQZhWQEtRMoov2pPqkM3T/94Oc4tZ9/8BKaZ+iPVMAEi3MamThUocFqfKByKTAANn1QnZIpBuE2CClxiLspwmPNcYxTnZPAWbhZhQzAURAo= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1344;20:DMMEaxZFjF1q/RqXi6FlGFh5dWFKNkg90y37niYKHvKFFj1mE4Ip0+P3RPsWJE9VyCc9W+SkPQ8v7lrie6bDXvHg33PXP5AyhHY34rVkd8rq5P6Ejdg4sBjISKQtEuGJgOBM4Xx6QsqACpi/Ma7JBtkQb8pMd+frzVAdlLMineo= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jun 2017 18:02:29.8613 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1344 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Rename rwsem_down_read_failed() in __rwsem_down_read_failed_common() and teach it to abort waiting in case of pending signals and killable state argument passed. Note, that we shouldn't wake anybody up in EINTR path, as: We check for (waiter.task) under spinlock before we go to out_nolock path. Current task wasn't able to be woken up, so there are a writer, owning the sem, or a writer, which is the first waiter. In the both cases we shouldn't wake anybody. If there is a writer, owning the sem, and we were the only waiter, remove RWSEM_WAITING_BIAS, as there are no waiters anymore. Signed-off-by: Kirill Tkhai --- include/linux/rwsem.h | 1 + kernel/locking/rwsem-xadd.c | 33 ++++++++++++++++++++++++++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h index dd1d14250340..0ad7318ff299 100644 --- a/include/linux/rwsem.h +++ b/include/linux/rwsem.h @@ -44,6 +44,7 @@ struct rw_semaphore { }; extern struct rw_semaphore *rwsem_down_read_failed(struct rw_semaphore *sem); +extern struct rw_semaphore *rwsem_down_read_failed_killable(struct rw_semaphore *sem); extern struct rw_semaphore *rwsem_down_write_failed(struct rw_semaphore *sem); extern struct rw_semaphore *rwsem_down_write_failed_killable(struct rw_semaphore *sem); extern struct rw_semaphore *rwsem_wake(struct rw_semaphore *); diff --git a/kernel/locking/rwsem-xadd.c b/kernel/locking/rwsem-xadd.c index 34e727f18e49..02f660666ab8 100644 --- a/kernel/locking/rwsem-xadd.c +++ b/kernel/locking/rwsem-xadd.c @@ -221,8 +221,8 @@ static void __rwsem_mark_wake(struct rw_semaphore *sem, /* * Wait for the read lock to be granted */ -__visible -struct rw_semaphore __sched *rwsem_down_read_failed(struct rw_semaphore *sem) +static inline struct rw_semaphore __sched * +__rwsem_down_read_failed_common(struct rw_semaphore *sem, int state) { long count, adjustment = -RWSEM_ACTIVE_READ_BIAS; struct rwsem_waiter waiter; @@ -255,17 +255,44 @@ struct rw_semaphore __sched *rwsem_down_read_failed(struct rw_semaphore *sem) /* wait to be given the lock */ while (true) { - set_current_state(TASK_UNINTERRUPTIBLE); + set_current_state(state); if (!waiter.task) break; + if (signal_pending_state(state, current)) { + raw_spin_lock_irq(&sem->wait_lock); + if (waiter.task) + goto out_nolock; + raw_spin_unlock_irq(&sem->wait_lock); + break; + } schedule(); } __set_current_state(TASK_RUNNING); return sem; +out_nolock: + list_del(&waiter.list); + if (list_empty(&sem->wait_list)) + atomic_long_add(-RWSEM_WAITING_BIAS, &sem->count); + raw_spin_unlock_irq(&sem->wait_lock); + __set_current_state(TASK_RUNNING); + return ERR_PTR(-EINTR); +} + +__visible struct rw_semaphore * __sched +rwsem_down_read_failed(struct rw_semaphore *sem) +{ + return __rwsem_down_read_failed_common(sem, TASK_UNINTERRUPTIBLE); } EXPORT_SYMBOL(rwsem_down_read_failed); +__visible struct rw_semaphore * __sched +rwsem_down_read_failed_killable(struct rw_semaphore *sem) +{ + return __rwsem_down_read_failed_common(sem, TASK_KILLABLE); +} +EXPORT_SYMBOL(rwsem_down_read_failed_killable); + /* * This function must be called with the sem->wait_lock held to prevent * race conditions between checking the rwsem wait list and setting the